这是javascript闭包吗?
我有这个这是javascript闭包吗?,javascript,function,closures,Javascript,Function,Closures,我有这个 function MyFunction() { var myVar = "I think I am encapsulated"; this.getMyVar = function() { return myVar; } } var myProperty = new MyFunction(); console.log(myProperty.getMyVar()); myProperty.myVar = "you're not encapsul
function MyFunction() {
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
}
var myProperty = new MyFunction();
console.log(myProperty.getMyVar());
myProperty.myVar = "you're not encapsulated";
console.log(myProperty.getMyVar());
它输出:“我想我被封装了两次”。为什么?我不认为这是一个闭包…闭包是围绕“getMyVar”函数的。构造函数内部的变量“myVar”是一个局部变量,在函数外部不可见,但作为“getMyVar”的返回值除外
在对象上设置“myVar”属性就是这样做的,但是“getMyVar”函数并没有返回对象的属性;它返回闭包中局部变量的值。闭包是围绕“getMyVar”函数的。构造函数内部的变量“myVar”是一个局部变量,在函数外部不可见,但作为“getMyVar”的返回值除外
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
在对象上设置“myVar”属性就是这样做的,但是“getMyVar”函数并没有返回对象的属性;它返回闭包中局部变量的值。是的,它是
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
当您在另一个函数内部定义函数时,内部函数可以访问外部函数的所有局部变量
在您的情况下,getMyVar
可以通过闭包访问myVar
。是的
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
当您在另一个函数内部定义函数时,内部函数可以访问外部函数的所有局部变量
在您的情况下,getMyVar
可以通过闭包访问myVar
var myVar = "I think I am encapsulated";
this.getMyVar = function() {
return myVar;
}
这是一个闭包,将返回函数创建时的myVar
变量。请注意,它是一个局部变量,因此在该函数退出后,没有其他方法可以访问它
var myVar = "I think I am encapsulated";
请注意,这不是this.myVar
(稍后使用myProperty.myVar
设置的变量)
可能你想做的是:
function MyFunction() {
this.myVar = "I think I am encapsulated";
this.getMyVar = function() {
return this.myVar;
}
}
这是一个闭包,将返回函数创建时的myVar
变量。请注意,它是一个局部变量,因此在该函数退出后,没有其他方法可以访问它
var myVar = "I think I am encapsulated";
请注意,这不是this.myVar
(稍后使用myProperty.myVar
设置的变量)
可能你想做的是:
function MyFunction() {
this.myVar = "I think I am encapsulated";
this.getMyVar = function() {
return this.myVar;
}
}