JScript语言——原型与原型链

2020-06-20  本文已影响0人  张先觉

# 原型:prototype属性__proto__constructor属性

推理原型链

function Person(){

}
let person1 = new Person();
let person2 = new Person();

// 第一阶段:从构造函数开始推理,清晰prototype属性、constructor属性、__proto__属性
console.log(`构造函数就是一个Function:${Person}`);
console.log(`prototype就是构造函数的属性,指向原型对象:${Person.prototype}`);
console.log(`constructor原型的属性,指向构造函数:${Person.prototype.constructor}`);
console.log(`对象person1、person2共享原型吗?${person1.__proto__ === person2.__proto__}`);

// 第二阶段:提问:是谁实例出的构造函数对象呢?又是谁实例化出构造对象的原型呢?
console.log(`Function.prototype实例化了Person构造函数:${Person.__proto__}`);
console.log(`Object.prototype实例化了Person构造函数的原型对象${Person.prototype.__proto__}`);

// 第三阶段:理清Function()、Function.prototype、Object()、Object.prototype、null
console.log(`Function的__proto__指向Function.prototype:${Person.__proto__.constructor.__proto__ === Person.__proto__}`);
console.log(`Object的__proto__指向Function.prototype:${Person.prototype.__proto__.constructor.__proto__ === Person.__proto__}`);
console.log(`Function.prototype的__proto__指向Object.prototype:${Person.__proto__.__proto__ === Person.prototype.__proto__}`);
console.log(`Object.prototype的__proto__指向null:${Person.prototype.__proto__.__proto__ === null}`);
prototype.png
上一篇下一篇

猜你喜欢

热点阅读