Cantin's blog

......

Function Js

| Comments

object

在js中object就是key: value的集合。

function对象也是object对象,但是他们都是以function关键字定义滴。

1
2
  Object //function Object() {};
  Function //function Function() {};

每一个object里面都会有个constructor的key,value一般就是object的function引用。 例如:

1
2
 var o = new Obkect();
 o.constructor // function Object() {}

function, new 与Object, Function

function与Function是不同的,function是关键字,而Function是对象。

1
2
3
function s() { this.qq = 'ss' }
s  //function s() { this.qq = 'ss' }
s.constructor // function Function() {}

所有的function对象都是由Function这个对象创建出来的。

1
2
 function s() { this.qq = 'ww' };
 var o = new s();

与下面代码应该相等:

1
2
3
4
5
 function s() { this.qq = 'ww' }
 var o = {};
 s.call(0)
 o.constructor = s
 0.__proto__ = s.prototype
1
2
3
 function s() { this.qq = 'asd' };
 s.call(s);
 s.qq;     // 'asd'

proto

object都有proto属性,其中保存着constructor的prototype

1
2
3
4
5
 //在chrome下
 function s() {}
 s.__proto__  // function Empty() {}
 Function.prototype // function Empty() {}
 Function.__proto__ // function Empty() {}

prototype

function对象的属性存放处

function, object

object拥有constructor,proto属性 function除了拥有上述属性,还拥有prototype属性,还拥有call,apply方法

后记

写的还真烂······

Comments