对JavaScript中原型和原型链的理解
首先来看对象和原型
js中万物皆对象,所有的数据类型底层都是object,当然包括函数,函数被当做第一等的对象来看
用构造函数来创建对象

Person就是一个构造函数,我们使用new创造了一个实例对象person
prototype
每个函数都有一个prototype属性,每个js对象在创建的时候都会与之关联另一个对象,这个对象就是我们所说的继承,没一个对象都会从原型上继承属性

person.prototype == 实例原型
__proto__
每个js对象都有一个__proto__属性,这个属性会指向该对象的原型

构造函数的prototype==实例对象的__proto__
constructor
每个原型都有一个constructor属性指向关联的构造函数

实例与原型

在这个例子中我们给实例对象添加了name属性,我们打印实例对象的name时,结果为 jiang,当我们删除了实例对象的name属性时,我们打印实例对象的name,这个时候实例对象没有name属性,它就会从原型中取寻找这个属性,也就是person.__proto__中寻找
总结
person.__proto__就好比人类的原始基因:一个脑袋,两条胳膊,两条腿,而从原型上new出来的person就好比从原始人进化过来的你我他,我们都是人,但人不仅仅是我们

浙公网安备 33010602011771号