原型和原型链的讲解

一,原型

①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
②搜有函数都有一个prototype(原型)属性,属性值是一个普通的对象
③所有引用类型的__proto__属性指向构造函数的prototype

每一个javascript对象创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。

原型的用途:

1.构造函数(Person)通过prototype访问原型对象存放公共方法

2.实例对象p访问原型对象_proto_存放公共对象

3.constructor构造方法(原型对象创建的构造函数)

代码:




    
    
    
    Document

    



二,原型链

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例,结果会怎样?显然,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。这就是所谓的原型链的基本概念
原型和原型链的讲解_第1张图片

 》》》

①一直往上层查找,直到到null还没有找到,则返回undefined
Object.prototype.__proto__ === null
③所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,指向当前这个触发事件执行的对象


 

你可能感兴趣的:(HTML,和他们,原型模式)