简单描述了原型与原型链的理解,欢迎学习讨论。
构造函数
function A(){}
原型 构造函数都有prototype原型属性
A.prototype.name = 'wjx'
原型的 constructor属性
console.log(A.prototype.constructor)
实例对象
let B = new A()
实例对象都有__proto__属性,这个属性指向构造函数的原型
console.log(B.__proto__)
几者关系
console.log(A.prototype)
console.log(B.__proto__);
console.log(B.__proto__ === A.prototype);
console.log(A.prototype.constructor===A)
B.name ='wjx123'
console.log(B.name);
console.log(B.__proto__)
delete B.name
console.log(B.name)
总结:
实例对象先访问自己的属性,如果没有就访问__proto__, __proto__指向原型,在原型里面找, 如果找不到,就在原型的原型里找,原型的原型是啥呢?对象?。 原型的对象是由构造函数Object()生成的
console.log(Object.prototype.__proto__ === null)
所以 Object.prototype.proto 的值为 null 跟 Object.prototype 没有原型,其实表达了一个意思。 // 所以查找属性的时候查到 Object.prototype 就可以停止查找了。~~~~~~~~~~~~~~~~这个就是原型链了。。。。。。。。。个人学习理解。如有不对,请大佬纠正。
学习交流扣群儿732278669
|