2015-08-31 37 views
1

我正在導出一個類,我不希望用戶能夠訪問變量 name變量。從技術角度來看,這樣做有沒有什麼不對,而不是個人偏好?我知道這可能不是最佳做法,但它似乎有效。Javascript:使用模塊時的「私有」變量

let _name = 'bob'; 
export default class Person { 
    getName() { 
    return _name; 
    } 

    setName(name) { 
    _name = name; 
    } 
} 
+0

你已經基本實現了一個單例。 –

+0

嘗試使用兩個實例發生的情況。 – Bergi

回答

2

問題很簡單 - _name駐留在閉包中,Person的所有實例都將設置並獲取相同的_name。

var a = new Person(); 
a.setName('John'); 

var b = new Person(); 
b.getName(); // the result will be John 
0

嗯,我所看到的,我的看法是,_name不再是私有按照您所提供的代碼,因爲要定義gettersetter方法,基本上變成了可變公衆。

你也應該看看@ OriDrori的回答,因爲他對變量範圍是正確的。