原型与原型链

2018-11-11  本文已影响0人  tolstory

1.原型prototype

每个函数都有一个prototype属性,也只有函数才拥有该属性。该属性指向的是原型对象,这个属性也是一个对象数据类型的值。

function f(){}
f.prototype.name = 'shawn';
var f1 = new f();
var f2 = new f();
console.log(f1.name)  // shawn
console.log(f2.name)    // shawn

函数的prototype属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是上面提到的f1和f2的原型。

2. poroto

每一个JavaScript的对象都具有的一个属性叫proto,这个属性会指向该对象的原型。

function f(){}
var f1 = new f();
f1.__proto === f.prototype  // true

3.原型链

在JavaScript中万物都是对象,对象和对象之间也有关系,并不是孤立存在的。对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。

这里需要强调的是Object.prototype 的原型是null。因为Object是js中所有对象数据类型的基类。

上一篇 下一篇

猜你喜欢

热点阅读