function a(){
this.name = "lili";
}
var b = new a();
var c = a.prototype;
var d = b.proto;
var e = c.constructor;
var f = c.proto;
var g = b.constructor;
- 只有构造函数才有 prototype 属性, 值是构造函数的老爸 (原型对象); a.prototype === c;
- g === a; 实例的 constructor 指向 它的构造函数 (老爸);
- 实例可以通过__proto__ 访问到它的爷爷(原型); a.prototype === c === b.__proto__ ;
- 原型 也是某个原始对象的实例,所以可以通过 proto 访问到 Object 原型对象;f === Object;
- 原型 可以 通过 constructor 访问到它的儿子 (构造函数a);
- 通过__proto__ 访问到自己原型的方式,可以组成一个链,就是原型链 b.__proto__.proto__ === Objcet;
- 因为 Object 对象 proto 为null了,所以应了那句话:js 中一切皆对象; all from Object ;
一个神奇的事情:
实例通过__proto__ 访问到 原型;通过 constructor 访问到 构造函数;
构造函数 通过 prototype 也访问到原型
原型通过 constructor 访问到的并不是自己的构造函数,而是自己的构造函数;
function a(){
this.name = "lili";
}
var b = new a();
var c = a.prototype;