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

时间:2011-02-23 22:58:03

标签: javascript eval

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

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

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

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

1 个答案:

答案 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);