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)
我怎样才能做到这一点?
好的。答案如下(与 IE 不兼容):
json.__proto__ = MyClass.prototype;
Run Code Online (Sandbox Code Playgroud)
值得庆幸的是,我的应用程序中不需要 %$@$%# IE。
(当我这样做时,还有另一种可能性:在 MyClass 原型中创建一个包装函数,它将所有属性从 JSON 复制到新对象;浅复制应该足够了)。