var a = {};
var b = Object.create(a);
var c = Object.craete(b);
// 1.1 如果一个对象是由 Object.create生成 那么它就继承自这个对象
c.__proto__ === b;
b.__proto__ === a;
// 1.2 a是直接从Object而来 所以a是Object的实例 所以 a 继承自Object的原型
a.__proto__ === Object.prototype;
function Person () {}
var person = new Person();
// 1.3 如果一个对象是由构造函数生成 那么它就继承这个构造函数的原型
person.__proto__ === Person.prototype;
// 2.1 任一函数都是Function的实例对象 根据 1.3 则有任一函数都继承自Function的原型
Person.__proto__ === Function.prototype
// 2.2 Object也是一个函数 那么它也遵循 2.1
Object.__proto__ === Function.prototype
// 2.3 即使是Function自己 也是自己的实例 同样遵循2.1
Function.__proto__ === Function.prototype
// 3. 函数具有 prototype 属性来表示这个函数的原型 prototype是一个实例对象 除了__proto__外还有一个construcor
// 3.2 constructor 就是其自身
Person.prototype.constructor === Person
Object.prototype.constructor === Object
Function.prototype.constructor === Function
// 3.3 几乎任一函数的原型也是一个对象 这个对象是Object的实例对象
Person.prototype.__proto__ === Object.prototype
Function.prototype.__proto__ === Object.prototype
// 3.4 Object的原型不是Object的实例对象 而是 null
Object.prototype.__proto__ === null
网友评论