我通过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
,但这似乎不起作用。我错过了什么?
答案 0 :(得分:3)
好吧,在ECMAScript6中(在IE11中,以及今天所有其他非浏览器),这将是__proto__
obj.__proto__ = Object.create(DataObject.prototype);
[fiddle]
通常,请确保仅在对象创建案例中执行此操作,否则可能会非常危险。
另请注意,明确设置原型并不总是比复制两个属性as you can see here更快,因此您必须确保此处有实际增益。