它們是什麼和我們如何做到這一點?你可以給我一個例子嗎?例如,爲了避免與多個庫發生衝突,請使用以下命令:爲什麼我們需要私有變量?
回答
假設他們都使用常用的變量,如data
。如果兩個庫使用私有變量它的所有罰款:
var lib1 = (function() {
var data;
return {
get: function() { return data },
set: function(v) { data = v }
};
})();
// Supposed to do something different:
var lib2 = (function() {
var data;
return {
get: function() { return data },
set: function(v) { data = v }
};
})();
lib1.set(123);
lib2.set(456);
lib1.get(); // 123
lib2.get(); // 456
但是假設它們不使用私有變量,但全球的像這樣:
var lib1 = (function() {
return {
get: function() { return data },
set: function(v) { data = v }
};
})();
// Supposed to do something different:
var lib2 = (function() {
return {
get: function() { return data },
set: function(v) { data = v }
};
})();
lib1.set(123);
lib2.set(456);
lib1.get(); // 456 - overwritten by lib2. lib1 might not work properly anymore.
lib2.get(); // 456
所以lib1.get()
會lib2.get()
獲取相同的數據。
這個例子當然太明顯了,但爲了保持安全,使用私有變量是一個好習慣。
變量被封裝在一個類中以阻止它們的名稱相互衝突。這些可以是公共或私人的。有時需要確保只使用設置它們的函數來更改變量。例如,需要驗證日期的某些部分,以阻止某人設置2月45日的無效日期。
var factorial = (function(){
var precog = [1,1];// ===undefined for other indices, N = undefined || N
return function(y){
return precog[y] || (precog[y]=y*arguments.callee(y-1));
};
})();
這是帶有私人預編程的JavaScript函數。這存儲了以前計算的值,並且它是私人的,以阻止它們被操縱。
我相信有倍原因名稱空間。我理解的一種方式是:private
,protected
和public
表達式在團隊環境中幫助很多以便其他開發人員不會最終使用方法您不打算這樣做。也就是說,只有當方法或屬性只需要被同一個對象訪問時,你只能使用private
。當需要繼承類來承載相同功能時使用protected
,並且在不同類的對象需要訪問您的對象時使用public
。
例如:
類Victim
具有
- 私有方法haveAnxiety()
- 公共屬性appearsToBeRich:布爾
類具有
- 私有方法簡介(OBJ:受害者)
- 私有方法搶劫(OBJ:受害者)
Robber->profile()
將需要訪問Victim->appearsToBeRich
。如果Victim->appearsToBeRich
返回true
,那麼Victim
對象將獲得盜取。一個對象永遠不需要運行Victim->haveAnxiety
,因爲Victim
將運行this->haveAnxiety()
只要Victim
對象開始被搶劫。
當然,現實世界的例子是比我的例如LOT更復雜(我希望他們更優美)。無論如何,我希望這會有所幫助。
我不確定這是否與JavaScript有關。 – pimvdb
- 1. 爲什麼我們需要一個私有構造函數?
- 2. 爲什麼我們需要java中的私有嵌套接口?
- 3. 爲什麼我需要在有私有變量時使引用保持不變?
- 4. 爲什麼我們分別使用公共和私有變量
- 5. 爲什麼我們需要設置變量private/public?
- 6. 爲什麼我們需要新的實例變量?
- 7. 爲什麼我們需要iOS中的property outlet和變量?
- 8. 爲什麼我們需要投放變量而不分配它?
- 9. 爲什麼我們需要一個私人構造函數?
- 10. 爲什麼我們需要analysis_export當我們有analysis_port
- 11. 當我們有點子時,爲什麼我們需要Anaconda?
- 12. 雖然我們有Swing,但爲什麼我們需要JavaFX?
- 13. 當我們已經有向量時,爲什麼我們需要同步ArrayList?
- 14. DavLockDB:我們需要什麼?
- 15. 我們爲什麼需要,使用貓鼬有什麼好處
- 16. 模型中有什麼?爲什麼我們需要使用它
- 17. 爲什麼我們需要simple_one_for_one?
- 18. 爲什麼我們需要TensorFlow tf.Graph?
- 19. 爲什麼我們需要使用prompt.start()?
- 20. 爲什麼我們需要scalaz.stream迭代?
- 21. 爲什麼我們需要WCF
- 22. 爲什麼我們需要Anaconda 2.7?
- 23. 爲什麼我們需要編寫log.isDebugEnabled?
- 24. 爲什麼我們需要ng-click?
- 25. 爲什麼我們需要Control.Lens.Reified?
- 26. 我們爲什麼需要纖維
- 27. 爲什麼我們需要org.junit.ComparisonFailure?
- 28. 爲什麼我們需要addRequestHeader方法?
- 29. 爲什麼我們需要時代?
- 30. 爲什麼我們需要ContinueWith方法?
你在調用私有變量?你爲什麼問這個問題?請稍微描述一下。 –