说到js的原型和原型链网络上有许多讲解,这些讲解大多数都基于《javascript高级程序设计》里的讲解而来,虽然详细,但是也非常的冗杂,其中涉及到太多指针,引用,内存地址等相关知识。这些都是原型的必备知识,但是有时候太过详尽反而对基础薄弱的人的说一道障碍。
我这里抛出一个一句话讲解版本,先帮助js基础一般的朋友,先理解原型和原型链,等日后再去深入理解里面的指针和内存,甚至是原型这种继承模式的设计思路。
第一句话
构造函数的prototype就是原型,它是构造函数的一个属性,同时也是一个普通对象。
第二句话
js里任何对象都有__proto__属性,这个属性指向其构造函数的prototype,这个属性连接的关系链就叫原型链。
第三句话
Object.prototype.proto===null;
三句话已经说完,现在来串通一下
function test() {
this.name=“aa”
}
let obj=new test
由以上代码结合以上三句话可以得到:
obj.proto===test.prototype (运用第二句话)
test.prototype是test函数的一个属性,同时也是一个普通对象 (运用第一句话)
test.prototype既然是普通对象,那么他是由Object这个构造函数创建的,那么有:
test.prototype.proto===Object.prototype (运用第二句话)
最后 Object.prototype.proto===null; 完成原型链的封闭 (运用第三句话)
整个由__proto__串联起来的关系链,就是原型链