我想将一个普通的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);
要清楚:我希望从构造函数返回的对象与传入的对象相同(不是重复,而不是克隆)。
有没有办法实现这个目标?或者更好的方式来描述我的要求? :)
我喜欢这个有两个原因:
答案 0 :(得分:1)
我想你想这样做,以便JSON.parse创建的对象是除Object之外的其他东西的实例。
一个选项是使用Object.setPrototypeOf分配来自指定构造函数的新[[Prototype]]
,但是performance warnings for this on MDN(我不知道声明的有效性)。< / p>
更有效的解决方案可能是创建&#34;包装&#34;对象并将JSON创建的对象作为属性附加。许多DOM库使用此方法,并避免JSON数据中的属性名称与对象的方法名称冲突的可能性(例如,DOM库可以使用与DOM方法具有相同名称和特征的方法,但不要使用#39 ; t覆盖或与他们发生冲突)。
数据可以保存在闭包中,这样只有构造函数定义的getter和setter才能访问它。