当前位置: 首页 > Web前端 > JavaScript

prototype、proto、constructor的关系

时间:2023-03-26 20:24:55 JavaScript

其实来自于两行代码functionFoo(){};varf1=newFoo;【构造函数】  用于初始化新创建对象的函数是构造函数。例子中Foo()函数是一个构造函数[实例对象]  构造函数new操作创建的对象是一个实例对象。可以使用一个构造函数来构造多个实例对象  构造函数有一个原型属性,指向实例对象的原型对象。通过同一个构造函数实例化的多个对象具有相同的原型对象。原型对象常用于实现继承复制代码复制代码函数Foo(){};Foo.prototype.a=1;varf1=newFoo;varf2=newFoo;console.log(Foo.prototype.a);//1console.log(f1.a);//1console.log(f2.a);//1copycodecopycode[constructor]  原型对象有一个constructor属性,指向对应的构造函数theprototypeobjectFoo(){};console.log(Foo.prototype.constructor===Foo);//true  因为实例对象可以继承原型对象的属性,所以实例对象也有构造函数属性,也指向对应的原型对象ConstructorfunctionFoo(){};varf1=newFoo;console.log(f1.constructor===Foo);//true【proto】  实例对象有一个proto属性,指向对应的实例对象functionFoo(){}的原型对象;varf1=newFoo;console.log(f1.__proto__===Foo.prototype);//true