我在我的应用程序中使用了一组javascript类。在一个案例中,我想从ajax响应中评估一些json,其形状与我的一个类匹配。
我正在使用jquery parseJSON方法为我做eval。
唯一的问题是我现在想调用我的类中定义的方法但是我知道eval'd对象上不存在该方法。
在我的新对象上使用此方法的最佳方法是什么。有没有办法“施放”它?
答案 0 :(得分:6)
JavaScript中没有强制转换的概念。相反,您可以修改类的构造函数以接受普通对象。如何执行此操作取决于您如何设置类,但可能只是将对象的浅层副本包含到类的新实例中:
var MyClass = function (obj) {
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
this[i] = obj[i];
}
// Other class initialisation code
};
然后像这样“施放”你的对象:
var result = new MyClass(someObject);
如果你有多个需要这个的类,你可能更喜欢创建一个extend
函数来为你做克隆(或者如果你使用的是jQuery,这个函数已经存在):
var extend = function (obj1, obj2) {
for (var i in obj2) {
if (!obj2.hasOwnProperty(i)) continue;
obj1[i] = obj2[i];
}
};
然后像这样“演员”:
var result = new MyClass();
extend(result, someObject);