原型和原型链是js中的基础内容,也是面试的高频问点
原型对象
绝⼤部分的函数(少数内建函数除外)都有⼀个 prototype 属性,这个属性是原型对象⽤来创建新对象实例,⽽所有被创建的对象都会共享原型对象,因此这些对象便可以访问原型对象的属性。
例如 hasOwnProperty() ⽅法存在于Obejct原型对象中,它便可以被任何对象当做⾃⼰的⽅法使⽤.
var person = { |
由以上代码可知, hasOwnProperty() 并不存在于 person 对象中,但是 person 依然可以拥有此⽅法. 所以 person 对象是如何找到 Object 对象中的⽅法的呢?靠的是原型链。
原型链
原因是每个对象都有 proto 属性,此属性指向该对象的构造函数的原型,即上面说的prototype。 对象可以通过 proto 与上游的构造函数的原型对象连接起来,⽽上游的原型对象也有⼀个 proto ,这样就形成 了原型链。