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