我通过 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/

10-12 14:07