以下是一个使用公共和私有方法(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();