原型与原型链

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中所有对象数据类型的基类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容