见代码
$(ducument).ready(function(){
varf1=$("#formFujia4");
varf2=$("#formZhuangshi4");
varmc1=newMyClass(f1);
varmc2=newMyClass(f2);
varjsono={
a:mc1,
b:mc2
};
alert(jsono.a.getForm().attr("action"));
alert(jsono.b.getForm().attr("action"));
})
functionMyClass(f){
varform=f;
MyClass.prototype.getForm=function(){
returnform;
}
}
formFujia4和formZhuangshi4是两个form对象action不一样
但是打印的结果确是一样后面的对象会覆盖前面的对象
------解决方案--------------------
没写对,写法太奇葩,这个如果要解释挺困难;
简单说一下,原型上的成员可以被其实例访问,并且是共享的,所以你这种写法每个实例获得的值必然是同一个,因为其调用的都是同一个函数,闭包中的form变量也必定是一致的。
解释不明白就算了,这样改就行:
functionMyClass(f){
this.form=f;
MyClass.prototype.getForm=function(){
this.form;
}
}
或者
functionMyClass(f){
this.form=f;
}
MyClass.prototype.getForm=function(){
this.form;
}
都可以避免该问题