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