小弟我可以理解为这是JavaScript的Bug吗

我可以理解为这是JavaScript的Bug吗
见代码


 $(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;
 }
都可以避免该问题