如何从变量中获取变量?

时间:2015-08-19 03:46:31

标签: 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
};

}());

我像这样存储用户:User.set( user ); 但是当我尝试使用User.user检索用户或让用户使用User.getVotes()投票时,我得到了未定义。 为什么这样,是否有更好的方法?

1 个答案:

答案 0 :(得分:1)

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

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



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>
&#13;
&#13;
&#13;