JavaScript "this"引用了错误的对象

标签 javascript onclick javascript-objects dom-events

<分区>

好吧,this 并没有真正引用错误的 对象,但我不知道如何引用正确的对象。

function someObj() {
   this.someMethod1 = function() {
      var elementBtn = document.getElementById('myBtn');
      elementBtn.onclick = function() { 
         this.someMethod2(); //I want this.someMethod2() to be called
         //...but it tries to call elementBtn.someMethod2() i believe.
      };
   };
   this.someMethod2 = function() {
      alert('OK');
   };
}

因此,当我的 myBtn 被点击时,我希望 someObj.someMethod2() 运行。我希望它是 someObj,而不是 any other someObj。但是怎么办?!

最佳答案

您可能需要像这样进行调整:

function someObj() {
    var that = this;

    this.someMethod1 = function() {
        var elementBtn = document.getElementById('myBtn');
        elementBtn.onclick = function() { 
            that.someMethod2();
        };
    };
    this.someMethod2 = function() {
       alert('OK');
    };
}

“that”表示您所追求的范围。

关于JavaScript "this"引用了错误的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173385/

相关文章:

javascript - 无法将参数从命令传递到 grunt 文件

javascript - 使用 Javascript 将绝对值转换为相对 CSS 值

javascript - 将外部脚本事件绑定(bind)到组件中的html

javascript:本地化 block 中的变量

javascript - 如何使用 Angular.js 添加/删除 onClick 列表项?

html - 将 <td> 的值添加到文本框 onclick 时遇到问题

javascript - Mobile Safari 选择 onclick 事件

javascript - 来自 `new` 的 Javascript `function` 的奇怪行为

javascript - 迭代枚举对象中多个数组的键值对

javascript - 数组推送正在覆盖之前推送的数据