我做这个
function myFunction() {
var myVar = "I think I am encapsulated";
function getMyVar() {
return myVar;
}
}
var myProperty = myFunction;
myProperty.getMyVar(); // tells me myProperty.getMyVar is not a function.
和
function myFunction() {
var myVar = "I think I am encapsulated";
function getMyVar() {
return myVar;
}
}
var myProperty = myFunction();
myProperty.getMyVar(); // tells me myProperty is undefined
乃至
function MyFunction() {
var myVar = "I think I am encapsulated";
function getMyVar() {
return myVar;
}
}
var myProperty = new MyFunction();
myProperty.getMyVar(); // tells me myProperty.getMyVar is not a function.
在这三种情况下,我都会遇到问题。我在所有三个部分中均已将该问题作为在线注释中的一部分。现在,在有人告诉我只使用闭包之前,我并不想理解闭包,而是试图确切了解内部函数会发生什么。
如果您能在上面解释,我将不胜感激。因为这对我来说很直观。
谢谢
最佳答案
您所做的只是在myFunction
中定义一个函数,创建一个闭包...
要补救该实现,请使getMyVar
成为实例成员:
function myFunction() {
var myVar = "I think I am encapsulated";
this.getMyVar = function () {
return myVar;
}
}