原型链

prototype、proto和constructor的关系:

function Foo(){};

Foo.prototype.a = 1;

var f1 = new Foo;

instanceof

运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

构造函数:

用来初始化新创建的对象的函数是构造函数。在例子中,Foo()函数是构造函数

实例对象

通过构造函数的new操作创建的对象是实例对象。(如f1)

原型对象及prototype:

function Foo(){};

Foo.prototype.a = 1;

构造函数有一个prototype属性,指向函数的原型对象。通过同一个构造函数实例化的多个对象具有相同的原型对象。经常使用原型对象来实现继承

constructor

所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Foo)

由于实例对象可以继承原型对象的属性,所以实例对象也拥有constructor属性,同样指向原型对象对应的构造函数

f1.constructor === Foo

proto:

实例对象有一个proto属性,指向该实例对象对应的原型对象

f1.proto === Foo.prototype

*【1】函数(Function也是函数)是new Function的结果,所以函数可以作为实例对象,其构造函数是Function(),原型对象是Function.prototype

【2】对象(函数也是对象)是new Object的结果,所以对象可以作为实例对象,其构造函数是Object(),原型对象是Object.prototype

【3】Object.prototype的原型对象是null*

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容