簡體   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