o基础展示 codepen
什么是原型?函数的一个名叫prototype的属性,值是一个对象{} .
什么是原型链?对象上的proto属性组成的链条,值是一个对象{} .
如果原型与原型链容易混淆,不如以后直接就叫它prototype与 proto .
_proto 前后有两个抵杠有点像两条链子,访问当前对象的属性时,如果没有在它里面找到这个属性, 然后就会在当前对象的proto中查找,以此往上查找,找到会返回属性,没找到返回_undefined.
_
对象的proto__保存着该对象的构造函数的prototype,代码示例
//伪代码
person.__proto__ === Person.prototype
//构造函数Test
function Test(){};
//构造函数上的prototype属性
console.log(Test.prototype);
//构造函数生成的test对象
const test = new Test();
//test对象的__proto__属性
console.log(test.__proto__);
//构造函数的prototype 等于 生成的对象的__proto__
console.log(Test.prototype === test.__proto__);
//prototype也是对象所以也有__proto__
console.log(Test.prototype.__proto__ === Object.prototype);
//Object的prototype上的__proto__为null
console.log(Object.prototype.__proto__);
用一张图表示,图片来自网络
todo…