如何为 JSON 对象设置原型?

Ale*_*rev 5 javascript oop json casting

我正在从服务器接收一些 JSON 对象,并且我想将它“类型转换”或“祝福”到具有已定义方法的对象。有没有办法为普通 JSON 对象设置原型?

function MyClass(someValue) {
    this.myProperty = someValue;
}

MyClass.prototype.someMethod = function() { return "Here's " + this.myProperty + "!"};

var json = {myProperty : 'someValue'};

// ??? json.prototype = MyClass doesn't work, of course.

var result = json.someMethod();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ale*_*rev 2

好的。答案如下(与 IE 不兼容):

json.__proto__ = MyClass.prototype;
Run Code Online (Sandbox Code Playgroud)

值得庆幸的是,我的应用程序中不需要 %$@$%# IE。

(当我这样做时,还有另一种可能性:在 MyClass 原型中创建一个包装函数,它将所有属性从 JSON 复制到新对象;浅复制应该足够了)。

  • 好吧,它不是标准化的(即使使用 ECMAScript 5),所以使用时需要您自担风险:-) (3认同)