我如何制作一个物体的副本?使用Javascript

时间:2010-04-20 07:00:29

标签: javascript

我有一个json格式的课程。我想做两个例子。现在(很明显为什么)当我'制作'两个对象时,我真的有2个vars指向一个。 (b.blah ='z'会使a.blah =='z')

如何复制对象?

var template = {
    blah: 0,
    init: function (storageObj) {
        blah = storageObj;
        return this; //problem here
    },
    func2: function (tagElement) {
    },
}

a = template.init($('form [name=data]').eq(0));
b = template.init($('form [name=data2]').eq(0));

3 个答案:

答案 0 :(得分:2)

如果你想要多个实例,听起来像构造函数可能会对你有所帮助。

function Template(element) {
    this.blah = element;
}

Template.prototype.func2 = function(tagElement) {
    //...
};

var a = new Template($('form [name=data]').eq(0));
var b = new Template($('form [name=data2]').eq(0));

b.func2('form');

函数原型(Template.prototype)上的所有方法都可以从每个实例访问,并且每个实例都相应地作用域。 new关键字将运行该函数,然后返回一个全新的对象,继承原型。

您将不再拥有与ab完全相同的对象。

答案 1 :(得分:0)

答案 2 :(得分:-2)

var b = {}, key;

for (key in a){

    if(a.hasOwnProperty(key)){
        b[key] = a[key];
    }

}
相关问题