昨天面试字节,挂了,很多知识只是明白个大概,但无法自己表述出来,在知道和表述之间还有着巨大的鸿沟,同时也再次证明了学东西真的不图快,图快就真学不好了。之后的学习慢慢来,稳扎稳打。那我接下来以一篇知乎来自己总结原型链。
function Person(name){ // 1
this.name = name;
}
Person.prototype.sayName = function(welcome) { // 5
console.log(welcome, this.name);
}
var person1 = new Person('Smiley'); // 9
person1.sayName('Hello'); // 10
以后给面试官讲原型链的时候可以自己在屏幕上画图
prototype --》
(function) 【object】
《-- constructor
^
|__proto__
prototype --》
(Person) 【sayName】Person.prototype
《-- constructor
^
|__proto__
【person1】
console.log(Person === Person.prototype.constructor);
console.log(person1.__proto__ === Person.prototype);
// 均为 true
person1.constructor这个属性,顺着person1的__proto__向上找,找到Person.prototype。
Person.prototype上有constructor这个属性指向person
MDN官方解释:
每个实例对象( object )都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype )。该原型对象也有一个自己的原型对象( proto ) ,层层向上直到一个对象的原型对象为 null。