[英]javascript change object variable reference
我是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
问候
您要做的是创建一个函数闭包 。 这意味着在clear
函数中, userId
被创建为局部变量,并与全局User.userId
分开范围。
您需要做的是使用this
关键字指定您要更改的userId
是全局的。
var User = function () {
var userId = 0;
var clear = function () {
this.userId = 0;
}
return{
clear:clear,
userId:userId,
}
}
您正在返回一个对象
return{
clear:clear,
userId:userId,
}
没有id属性,但有userId。
您缺少此关键字。
var User = function () {
var userId = 0;
var clear = function () {
this.userId = 0;
}
return{
clear:clear,
userId:userId,
}
}
在clear方法中引用属性时,您需要使用“ this”
var clear = function () {
this.userId = 0;
}
这里有几个问题。
1:在函数定义中未定义userId
。
2: user
未定义,所以user.clear()
也未定义(实际上,我很惊讶您的代码不仅崩溃了)。 您的意思是john.id
和john.clear()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.