我是 javascript 新手,有人可以解释一下为什么这段代码不起作用吗?
var User = function () {
var userId = 0;
var clear = function () {
userId = 0;
}
return{
clear:clear,
userId:userId,
}
}
...
// in mocha test:
var john = new User();
john.userId = 666;
john.userId.should.equal(666); // true
john.clear()
john.userId.should.equal(0); // false
问候
最佳答案
您所做的就是创建一个 function closure 。这意味着在 clear
函数内,userId
被创建为局部变量,并且其作用域与全局 User.userId
分开。
您需要做的是使用 this
关键字来指定您尝试更改的 userId
是全局的。
var User = function () {
var userId = 0;
var clear = function () {
this.userId = 0;
}
return{
clear:clear,
userId:userId,
}
}
关于javascript更改对象变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44761758/