它们是什么和我们如何做到这一点?你可以给我一个例子吗?例如,为了避免与多个库发生冲突,请使用以下命令:为什么我们需要私有变量?
回答
假设他们都使用常用的变量,如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. 为什么我们需要新的实例变量?
- 3. 为什么我们需要设置变量private/public?
- 4. 为什么我们需要投放变量而不分配它?
- 5. 为什么我们需要一个私人构造函数?
- 6. 虽然我们有Swing,但为什么我们需要JavaFX?
- 7. 当我们已经有向量时,为什么我们需要同步ArrayList?
- 8. 模型中有什么?为什么我们需要使用它
- 9. 为什么我们需要fieldset标签?
- 10. 为什么我们需要RIA?
- 11. 为什么我们需要.htaccess的worpdress?
- 12. 为什么我们需要extern?
- 13. 为什么我们需要9补丁?
- 14. 为什么我们需要在JavaScript
- 15. 我们为什么需要纤维
- 16. 为什么我们需要BeginGetResponse和BeginRead?
- 17. 为什么我们需要TensorFlow tf.Graph?
- 18. 为什么我们需要Bower和Nuget?
- 19. 为什么我们需要ng-click?
- 20. 为什么我们需要`ngDoCheck`
- 21. 为什么我们需要boost :: thread_specific_ptr?
- 22. 为什么我们需要设置SONAR_RUNNER_OPTS?
- 23. 为什么我们需要Anaconda 2.7?
- 24. 为什么我们需要mktemp?
- 25. 为什么我们需要ClassMethods和InstanceMethods?
- 26. JSP:为什么我们需要RequestDispatcher?
- 27. 为什么我们需要ioc容器
- 28. 为什么我们需要RBAC许可?
- 29. 为什么我们需要scalaz.stream迭代?
- 30. 为什么我们需要Buffer.isBuffer方法?
你在调用私有变量?你为什么问这个问题?请稍微描述一下。 –