【发布时间】:2015-10-14 22:41:24
【问题描述】:
我想将一个普通的 JavaScript 对象变成一个带有原型等的对象,而不是克隆对象。这可能吗?
基本上,而不是这样:
var MyClass = function(fromObj) {
this.propA = fromObj.propA;
this.propB = fromObj.propB;
...
}
inherit (SuperClass, MyClass);
我想:
var MyClass = function(fromObj) {
this = fromObj;
}
inherit (SuperClass, MyClass);
要特别清楚:我希望从构造函数返回的对象与传入的对象相同(不是重复的,不是克隆的)。
有没有办法做到这一点?或者更好的方式来描述我的要求? :)
我喜欢这个有两个原因:
- 我们正在加载大量对象,速度和内存可能开始变得重要。
- 有很多地方使用了“普通的旧 javascript 对象”,可能很难确保它们都指向新的实例化对象。
【问题讨论】:
-
“不重复”是什么意思?执行函数后您是否希望影响其他对象?克隆用于描述一个新的实例。
-
通过引用传递对象? stackoverflow.com/questions/13104494/…
-
澄清,@PHPglue - 没有重复。我确实希望它影响另一个(嗯,相同的)对象。
-
你可以只做一个variable = Object,然后variable.property =会影响Object。
var whatever = new ConstructorHere(), again = whatever; -
因此实际上您只想将传入对象的内部
[[Prototype]]属性分配给构造函数原型的属性,实际上与Object.create(prototypeObject)相反。见Object.setPrototypeOf。另请参阅 MDN 和有关性能的警告。
标签: javascript object prototype prototypal-inheritance