js中什么是原型对象和原型链

JavaScript021

js中什么是原型对象和原型链,第1张

每个 JavaScript 对象内部都有一个指向其它对象的“指针”或者 “引用“, 并通过这种方式在对象之间建立了一种联系,形成了一种链式结构,我的理解这就是所谓的原型链。

function F() {} // F 是一个函数,函数也是对象,而且每个函数都有一个属性叫:"prototype"

var o = new F() // F.prototype 就是 o 的原型对象

console.log(o.name)

// 输出: undefined

F.prototype.name = "foo"

console.log(o.name)

// 输出: foo

// 上面这个例子是想说明:通过 new 在对象 o 与对象 F.prototype 之间建立了联系, 这个建立联系

// 的方式有人叫 "原型继承" 。 当访问的对象属性不存在时,就会沿着原型链去查找。

JS原型:构造函数(类)的实例都具有一个prototype属性,这个属性是一个指针,指向构造函数的原型对象,当调用构造函数创建一个新实例时,每个实例都会继承构造函数原型上的属性和方法。

JS原型链:JS采用原型链的模式实现继承,每个对象都有一个指向父对象的指针,当查找对象的属性时,会从当前对象的原型开始沿着指针向上查找,直到找到一个名称匹配的属性或者到达原型链的最顶端,Object.prototype为空,则停止查找。