我通过 JSON 收到一堆对象,这些对象最终需要一些实例成员函数。
有没有办法在不复制数据的情况下做到这一点?
例如:
var DataObject = function() {};
DataObject.prototype.add = function() { return this.a + this.b; };
var obj = JSON.parse('{"a":1, "b":2}');
// Do something to obj to make it inherit from DataObject
console.assert( obj.add() === 3 );
我试过设置
obj.prototype = DataObject.prototype
但这似乎不起作用。我错过了什么? 最佳答案
好吧,在 ECMAScript6(在 IE11 中,以及今天的所有其他非 ie 浏览器中),那将是 __proto__
obj.__proto__ = Object.create(DataObject.prototype);
[ fiddle ]
通常,请确保仅在创建对象的情况下执行此操作,否则这样做会非常冒险。
另请注意,显式设置原型(prototype)并不总是比复制两个属性 as you can see here 快,因此您必须确保此处有实际增益。
关于javascript - 使 JSON.parse 创建的对象从另一个类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24034884/