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變數
- 淺談 class 私有變數變數
- 淺談class私有變數變數
- Python中私有變數和私有方法Python變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- JavaScript中是如何定義私有變數的JavaScript變數
- 靜態變數和非靜態變數變數
- 關於例項變數和靜態變數的一點疑問變數
- java執行緒安全問題之靜態變數、例項變數、區域性變數Java執行緒變數
- iOS 靜變數static、全域性變數extern、區域性變數、例項變數iOS變數
- 【短文】為什麼我不在PHP的私有變數用下劃線了?PHP變數
- 靜態變數變數
- 筆記-go反射操作私有變數筆記Go反射變數
- 閉包:私有化變數 《JavaScript高程3》 《JavaScript忍者祕籍》變數JavaScript
- 淺談Python中的私有變數Python變數
- 靜態變數與靜態方法變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- JNI/NDK開發指南(7):C/C++訪問Java例項變數和靜態變數C++Java變數
- ruby中的類例項變數和例項的例項變數變數
- 為什麼為 const 變數重新賦值不是個靜態錯誤變數賦值
- 【C++】靜態持續變數?如何建立靜態持續變數?C++變數
- 靜態全域性變數和全域性變數變數
- 靜態持續變數變數
- 靜態變數和Session變數Session
- JavaScript私有屬性和靜態屬性JavaScript
- 關於單例及靜態變數測試單例變數
- 全域性變數和靜態變數的區別變數
- Spring如何為靜態變數注入值Spring變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- ES6 系列之私有變數的實現變數
- ES6系列之私有變數的實現變數
- 函式中的私有變數和特權方法函式變數
- static靜態變數的理解變數
- js中的靜態變數JS變數
- C++ 靜態變數什麼時候完成初始化C++變數