javascript:私有變數 (靜態私有變數為什麼會被所以例項共享?-答疑解惑)
私有變數 很好理解,靜態私有變數不好理解,我想了好幾天還是沒有明白,為什麼同一個私有變數會被所有例項共享。我反反覆覆,依然不能理解。直到,我認真去看這段話之後,才明白的。
這個私有變數被所有例項共享,是兩個原因組合在一起導致的。第一個是原型方法會被所以例項共享;第二個是閉包總是儲存這對包含作用域的引用。(而原型方法,也就是這裡的閉包。)
(function () {
var name = "";
Person = function (value) {
name = value;
};
Person.prototype.getName = function () {
return name;
};
Person.prototype.setName = function (value) {
name = value;
};
})();
var p1 = new Person('tom');
var p2 = new Person('ann');
p1.setName('張飛');
console.log(p1.getName() +" ### "+p2.getName());
輸出:
張飛 ### 張飛
現象的確是這個現象,主要是要理解為什麼會出現這個現象。原因已經在開頭的截圖裡面展示了。
相關文章
- [譯] JavaScript 中的私有變數JavaScript變數
- 在python中什麼是私有變數域Python變數
- Python中私有變數和私有方法Python變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- JavaScript中是如何定義私有變數的JavaScript變數
- 淺談 class 私有變數變數
- 淺談class私有變數變數
- java執行緒安全問題之靜態變數、例項變數、區域性變數Java執行緒變數
- 【短文】為什麼我不在PHP的私有變數用下劃線了?PHP變數
- 靜態變數變數
- 閉包:私有化變數 《JavaScript高程3》 《JavaScript忍者祕籍》變數JavaScript
- 筆記-go反射操作私有變數筆記Go反射變數
- Spring如何為靜態變數注入值Spring變數
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- 關於單例及靜態變數測試單例變數
- 可變引數例項
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- ES6 系列之私有變數的實現變數
- ES6系列之私有變數的實現變數
- Python私有變數如何定義?Python學習教程!Python變數
- C++ 靜態變數什麼時候完成初始化C++變數
- 【Java貓說】例項變數與區域性變數Java變數
- PLC結構化文字(ST)——臨時&靜態&例項-變數(TEMP&STAT&INST)變數
- 健壯的例項變數 (Non Fragile ivars)和脆弱的例項變數(Fragile ivars)變數
- Java靜態變數在靜態方法內部無法改變值Java變數
- 為什麼 JavaScript 的私有屬性使用 # 符號JavaScript符號
- 對於systemverilog靜態變數和動態變數 ,描述不正確的是()。變數
- iOS 靜態庫 與私有庫iOS
- JavaScript變數的生命週期:為什麼let不被提升JavaScript變數
- Python - 物件導向程式設計 - 類變數、例項變數/類屬性、例項屬性Python物件程式設計變數
- 私有云究竟有什麼優勢?為什麼要了解私有云呢?
- C++ 的靜態成員變數為什麼一定要在類外定義C++變數
- JavaScript變數JavaScript變數
- go 突破訪問限制,訪問其他包中的私有變數Go變數
- C#訪問或修改私有類、函式、變數、屬性C#函式變數
- 一分鐘帶你瞭解Python私有變數的用法!Python變數
- python變數命名為什麼數字不能開頭?Python變數
- Tensorflow學習筆記: 變數及共享變數筆記變數