Javascript Jquery覆盖我的";这";在我的目标中

Javascript Jquery覆盖我的";这";在我的目标中,javascript,jquery,Javascript,Jquery,它是的副本,但根据我的问题描述,我无法在此处找到它。很多人可能有同样的问题 我有一个物体像: var my_object = new function() { this.function2 = function() { $("#button").click(function() { this.function1() }) }; this.function1 = function() { }; } a =

它是的副本,但根据我的问题描述,我无法在此处找到它。很多人可能有同样的问题

我有一个物体像:

var my_object = new function() {

    this.function2 = function() {
        $("#button").click(function() {
           this.function1()
        })
    };

    this.function1 = function() {
    };

}

a = my_object()
如果我点击#按钮,就会发生这种情况

此.function1不是一个函数


如何正确解决这个问题??如何防止jquery覆盖我的“this”?

当您在jquery中绑定事件处理程序时,回调中的this引用了触发事件的元素

要在函数中设置
this
的值,请调用函数上的
bind
,传递希望成为
this
的对象:

var my_object = new function() {

  this.function2 = function() {
      $("#button").click(function() {
         this.function1()
      }.bind(this)
  });

  this.function1 = function() {
  };

}

在jQuery中绑定事件处理程序时,回调中的
这个
引用了触发事件的元素

要在函数中设置
this
的值,请调用函数上的
bind
,传递希望成为
this
的对象:

var my_object = new function() {

  this.function2 = function() {
      $("#button").click(function() {
         this.function1()
      }.bind(this)
  });

  this.function1 = function() {
  };

}

存储对该
的引用,以避免混淆和上下文问题

在事件处理程序
中,这是完全不同的。。它是一个dom节点

var my_object = new function() {
    var self = this; // reference to `my_object`

    self.function2 = function() {
        $("#button").click(function() {
           // "this" is dom element returned by jQuery event handler
           // but "self" is already a stored reference to `my_object`
           self.function1()
           $(this).css('color','red')
        })
    };

    self.function1 = function() {
    };

}

存储对该
的引用,以避免混淆和上下文问题

在事件处理程序
中,这是完全不同的。。它是一个dom节点

var my_object = new function() {
    var self = this; // reference to `my_object`

    self.function2 = function() {
        $("#button").click(function() {
           // "this" is dom element returned by jQuery event handler
           // but "self" is already a stored reference to `my_object`
           self.function1()
           $(this).css('color','red')
        })
    };

    self.function1 = function() {
    };

}