使用构造函数和调用函数

时间:2014-05-15 13:44:08

标签: javascript jquery oop

根据所选的复选框,我有一个隐藏/显示大量元素的表单。我决定编写一个构造函数来避免重复。它需要两个参数。需要显示/隐藏的复选框和元素。

function ShowHideConstructor(controlElement, actionElement){
  this.x = controlElement;
  this.y = actionElement;

x.change(function(){
    var isChecked = x.is(":checked");

    if (isChecked){
        y.show();
    } else {
        y.hide();
    }

  });
}

我想解雇它:

var ce = $('#c85_add_residence_address-0');
var ae = $(".address_of_residence");

ShowHideConstructor(ce,ae);

有效!我第二次调用它时会出现问题,例如:

var ca = $('#c85_add_correspondence_address-0');
var ac = $('.address_for_correspondence');

ShowHideConstructor(ca,ac);

当我有两个时,它会中断。为什么?

1 个答案:

答案 0 :(得分:1)

那是因为你忘记了new所以this是外面的this(取决于你所说的那个,可能是window)。因此,第二次调用它时,可以替换第一个x和y属性。

使用

new ShowHideConstructor(ca,ac);

在您的构造函数中,将所有xy替换为this.xthis.y

这就是说,当你甚至不保留新实例时,对构造函数的这种副作用并不是一个好习惯。我宁愿分两步完成:构建实例然后执行绑定到change事件的函数。