在一个闭包中使用jquery的某些功能时,会有this覆盖的问题eg:
function a () {
    this.name = 'a';
    $("#container").click(function () {
        // 这里this指向了#container的DOM,是否有比较优雅的解决方案获取外部的this.name = 'a'?
    });
}现在找到的方法是在进入jquery前保存this,但是这样显然破坏了oop的封装原则。其实虽然知道JS本不是oop语言,不过鉴于其语法弹性之大超过我这个js新手的可预计范畴,还望各位多多指教,

解决方案 »

  1.   

    function a () {
        this.name = 'a';
        var that = this;
        $("#container").click(function () {
            alert(that.name);
        });
    }
      

  2.   

    从作用域角度是否可以这样理解函数内部以this.name = value;进行定义的变量,属于public,可以在new之后通过.运算符引用到
    而var name = value;则是私有变量,只在函数运行的上下文出现,无法在外部调用到?
      

  3.   

    function a () {
        var _this = this;
        this.name = 'a';
        $("#container").click(function () {
            alert(_this.name);
        });
    }这是最通用的做法