javascript:转换使用eval创建的对象

Chr*_*son 8 javascript eval

我有一套我在整个应用程序中使用的javascript类.在一个案例中,我想从ajax响应中评估一些json,其形状与我的一个类匹配.

我正在使用jquery parseJSON方法为我做eval.

唯一的问题是我现在想调用我的类中定义的方法但是我知道eval'd对象上不存在该方法.

在我的新对象上使用此方法的最佳方法是什么.有没有办法"施放"它?

Dav*_*ang 6

在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)