Javascript 如何从闭包中取出变量?

Javascript 如何从闭包中取出变量?,javascript,Javascript,我有这样的课程/服务: var User = (function () { 'use strict'; var user; function set( user ) { user = user; } function getVotes() { return user.votes; } return { user : user, set : set, getVotes : getVotes }; }()); 我像这样存储用户:u

我有这样的课程/服务:

var User = (function () {
'use strict';

var user;

function set( user ) {
    user = user;
}

function getVotes() {
    return user.votes;
}

return {
    user     : user,
    set      : set,
    getVotes : getVotes
};

}());
我像这样存储用户:
user.set(user)
但是,当我尝试使用
user.user
检索用户,或者使用
user.getvoces()
获取用户投票时,我会得到未定义的结果。
这是为什么?还有更好的方法吗?

您需要为setter methods参数使用不同的名称。由于在引用
user
时,您在setter方法中为闭包变量和参数使用了名称
user
,因此它将只引用参数,而不是闭包项

赋值操作不执行任何操作,因为它将变量的值赋值给自身

var User=(函数(){
"严格使用",;
var用户;
功能集(usr){
用户=usr;
}
函数getvows(){
返回用户投票;
}
返回{
用户:用户,,
集:集,,
获取投票:获取投票
};
}());
User.set({
名称:“x”,
投票:5
});
snippet.log('voces:'+User.getvoces())


这就解释了xDJust我只是想了解一些信息,这是单例模式吗?是的,我这样的服务至少是这样的。设置
user:user
不会捕获闭包。只有函数才能捕获闭包。变量/属性赋值赋值。我明白了。感谢您的解释:)