使JSON.parse创建的对象继承自另一个类

时间:2014-06-04 10:21:35

标签: javascript json prototype

我通过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,但这似乎不起作用。我错过了什么?

1 个答案:

答案 0 :(得分:3)

好吧,在ECMAScript6中(在IE11中,以及今天所有其他非浏览器),这将是__proto__

obj.__proto__ = Object.create(DataObject.prototype);

[fiddle]

通常,请确保在对象创建案例中执行此操作,否则可能会非常危险。

另请注意,明确设置原型并不总是比复制两个属性as you can see here更快,因此您必须确保此处有实际增益。