146  
查询码:00001172
js中对象的constructor属性及其作用
来源:https://blog.csdn.net/summer199605/article/details/88700382?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
作者: 朱凡 于 2020年04月04日 发布在分类 / FM组 / FM_App 下,并于 2020年04月04日 编辑
constructor 阅读 阅读数 读数 属性 对象 javascript 来自 原型 prototype

js中对象的constructor属性及其作用


constructor
引用javascript 对象中的 constructor属性的作用?

var a,b;
(function(){
 function A (arg1,arg2) {
  this.a = 1;
  this.b=2; 
 }

 A.prototype.log = function () {
  console.log(this.a);
 }
 a = new A();
 b = new A();
})()
a.log();
// 1
b.log();
// 1

通过以上代码我们可以得到两个对象,a,b,他们同为类A的实例。因为A在闭包里,所以现在我们是不能直接访问A的,那如果我想给类A增加新方法怎么办?

// a.constructor.prototype 在chrome,firefox中可以通过 a.__proto__ 直接访问
a.constructor.prototype.log2 = function () {
 console.log(this.b)
}

a.log2();
// 2
b.log2();
// 2

通过访问constructor就可以了。(个人理解是因为除了火狐和谷歌浏览器不能使用__proto__,故使用constructor来访问)
或者我想知道a的构造函数有几个参数?

a.constructor.length

通俗的讲,就是为了将实例的构造器的原型对象暴露出来, 比如你写了一个插件,别人得到的都是你实例化后的对象, 如果别人想扩展下对象,就可以用 instance.constructor.prototype 去修改或扩展原型对象。

本人在@celi_echo的帮助下的理解:
constructor可以当做prototype的属性,
a.constructor = a.proto.constructor = A.prototype.constructor =A



 推荐知识

 历史版本

修改日期 修改人 备注
2020-04-04 22:21:41[当前版本] 朱凡 创建版本

 附件

附件类型

PNGPNG

知识分享平台 -V 4.8.7 -wcp