在Javascript中确保“这个”上下文的最佳做法是什么?

前端之家收集整理的这篇文章主要介绍了在Javascript中确保“这个”上下文的最佳做法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是一个使用公共和私有方法(fiddle: http://jsfiddle.net/gY4mh/)的简单Javascript类的示例.
function Example() {
    function privateFunction() {
       // "this" is window when called.
       console.log(this);
    }

    this.publicFunction = function() {
       privateFunction();
    }
}

ex = new Example;
ex.publicFunction();

从public调用私有函数会导致“this”作为窗口对象.我应该如何确保我的私有方法与类上下文而不是窗口一起调用?这是不可取的吗?

解决方法

使用封闭.基本上任何在函数中声明的变量,仍然可用于该函数内的函数
var Example = (function() {
    function Example() {
        var self = this; // variable in function Example
        function privateFunction() {                  
            // The variable self is available to this function even after Example returns. 
            console.log(self);
        }

        self.publicFunction = function() {
            privateFunction();
        }
    }

    return Example;
})();

ex = new Example;
ex.publicFunction();

猜你在找的JavaScript相关文章