繁体   English   中英

如何获得封闭的变量?

[英]How to get variables out of closure?

我有这个课程/服务:

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.getVotes()获得用户投票时,我无法定义。 为什么会这样,还有更好的方法吗?

您需要为setter方法参数使用其他名称。 由于在引用user时已在闭包变量和setter方法内部的参数中使用了名称user ,因此它仅引用参数而不是闭包项。

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

 var User = (function() { 'use strict'; var user; function set(usr) { user = usr; } function getVotes() { return user.votes; } return { user: user, set: set, getVotes: getVotes }; }()); User.set({ name: 'x', votes: 5 }); snippet.log('votes: ' + User.getVotes()) 
 <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM