在联署材料中没有私密的东西, 但是您可以使用 < a href=> "http://jibbering.com/ faq/ notes/ clocuresss/" rel="nofollow" > clocures 来玩屏幕游戏。
例如,在您的例子中,您不需要将 var1
公有财产暴露为公共财产。您可以很容易地将您的代码重写如下:
function ctest() {
var var1 = "haha";
this.func1 = function() {
alert(var1);
func2();
alert(var1);
}
var func2 = function() {
var1 = "huhu";
}
}
由于 func1
和 func2
都具有相同的范围, 它们被定义在同一函数中, chest
- 他们可以访问相同的变量。 当然, 如果您没有 var1
, 那么: myobj. var1
将是 un defed
。
如果您希望 var1
作为属性被曝光, 那么您所需要的是 < a href=" https:// developmenter.mozilla.org/ en/ JavaScript/ Reference/ Global_ Objects/Function/bind" rel= “ nofollow" >bind func2
到您在构建器中创建的对象实例 :
function ctest() {
this.var1 = "haha";
this.func1 = function() {
alert(this.var1);
func2();
alert(this.var1);
}
var func2 = function() {
this.var1 = "huhu";
}.bind(this);
}
否则 func2
将有一个不同的上下文对象( this
)。 如果浏览器不支持 >>bind
,而您不想使用shim(如上文链接所示),您可以再次利用关闭:
function ctest() {
this.var1 = "haha";
this.func1 = function() {
alert(this.var1);
func2();
alert(this.var1);
}
var context = this;
var func2 = function() {
context.var1 = "huhu";
}
}
IMVHO不那么优雅。