我这样做
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;
}
}
关于javascript - 为什么这个内部函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829639/