如何理解和描述“原型和原型链”
JavaScript中的对象,都有一个内置属性[[Prototype]],指向这个对象的原型对象。当查找一个属性或方法时,如果在当前对象中找不到定义,会继续在当前对象的原型对象中查找;如果原型对象中依然没有找到,会继续在原型对象的原型中查找(原型也是对象,也有它自己的原型);如此继续,直到找到为止,或者查找到最顶层的原型对象中也没有找到,就结束查找,返回undefined。可以看出,这个查找过程是一个链式的查找,每个对象都有一个到它自身原型对象的链接,这些链接组成的整个链条就是原型链。拥有相同原型的多个对象,他们的共同特征正是通过这种查找模式体现出来的。
用一个简单、明了、实际的例子来说明:
有一天,我想买一辆车,想知道这辆车从设计生产到出厂的一些过程,我们假设这个过程就是这辆车的原型链:
1. 有一个构造函数是制造这辆车的机器 function CarDemo(data) { this.name = data; }
2. 这个构造函数创建的实例的原型,就是机器要使用的模具,也可以说是设计图 CarDemo.prototype = { color: red, size: 4800, brands: BBA }
3. 然后生成出来的对象,就是这辆车,这辆车包括了设计图上的所有属性 var mycar = new CarDemo("zlz"); PS: 我的这辆车就继承了构造函数 CarDemo 的原型里的属性: mycar.color 是 red mycar.size 是 4800 mycar.brands 是 BBA
等式关系: CarDemo === CarDemo.prototype.constructor; mycar.__proto__ === CarDemo.prototype;
相关推荐
TingBen 2019-12-29
THEEYE 2019-12-19
Mrwind 2019-11-16
zhongshish 2020-10-21
Zhongmeishijue 2020-09-10
jinfeng0 2020-08-03
uileader 2020-07-18
jameszgw 2020-06-21
VanTYS 2020-05-20
chvnetcom 2020-05-20
THEEYE 2020-05-19
yanglin 2020-05-02
钟鼎 2020-05-01
嵌入式移动开发 2020-04-10
THEEYE 2020-03-26
chvnetcom 2020-02-03
嵌入式移动开发 2020-01-23
gougouzhang 2020-01-12
chvnetcom 2020-01-06