我有一个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));
答案 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关键字将运行该函数,然后返回一个全新的对象,继承原型。
您将不再拥有与a
和b
完全相同的对象。
答案 1 :(得分:0)
答案 2 :(得分:-2)
var b = {}, key;
for (key in a){
if(a.hasOwnProperty(key)){
b[key] = a[key];
}
}