【问题标题】:Javascript Objects and jQueryJavascript 对象和 jQuery
【发布时间】:2010-08-06 20:16:59
【问题描述】:

我不确定解决这个问题的最佳方法是什么。

我有一个控件,我希望能够打开和保存一些数据或动态更改它。

function TaskControl(params) {
    this.params = params;

    this.openTaskControl = function () {
        alert("openTaskControl");
    }

    $("#button").click(function () {
        this.openTaskControl();
    });
}

我遇到的问题是尝试调用 openTaskControl 会引发错误,因为 this 显然是指 HTML 元素而不是 TaskControl。如何从 click 函数内部调用此函数?

【问题讨论】:

    标签: javascript jquery oop


    【解决方案1】:
    function TaskControl(params) {
            this.params = params;
            var that = this;
    
            this.openTaskControl = function () {
                    alert("openTaskControl");
            }
    
            $("#button").click(function () {
                    that.openTaskControl();
            });
    }
    

    【讨论】:

      【解决方案2】:

      内部作用域将引用不同的this 对象。改用变量:

      function TaskControl(params) {
          var paramsSave = params;
      
          var openTaskControl = function () {
              alert("openTaskControl");
          }
      
          $("#button").click(function () {
              openTaskControl();
          });
      }
      

      【讨论】:

        【解决方案3】:

        这里是关于如何在 javascript 中使用 this 关键字的一个很好的讨论:http://www.quirksmode.org/js/this.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-10
          • 1970-01-01
          • 2013-03-04
          相关资源
          最近更新 更多