Javascript中的静态私有变量
Static Private Variables in Javascript
我是Javascript新手(即正确学习Javascript)。我正在阅读《面向Web开发人员的专业Javascript第三版》第7章中的"静态私有变量"部分。
我看到了这段代码,但我觉得它不理想:
(function(){
//private variables and functions
var privateVariable = 10;
function privateFunction(){
return false;
}
//constructor
MyObject = function(){
};
//public and privileged methods
MyObject.prototype.publicMethod = function(){
privateVariable++;
return privateFunction();
};
})();
在这种情况下,他们依赖于通过省略"var"来创建MyObject作为全局变量。然而,在严格模式下,你不能省略var关键字,否则这段代码会导致错误。
我的重写是正确的吗?
var MyObject = (function(){
//private variables and functions
var privateVariable = 10;
function privateFunction(){
return false;
}
var MyObject = function (){
}
//public and privileged methods
MyObject.prototype.publicMethod = function(){
privateVariable++;
return privateFunction();
};
return MyObject;
})();
我很困惑为什么书中省略了这个问题的解决方案,并采用了一种懒惰的方法。我坚信在所有代码中使用"严格模式"。
是的,你的重写是正确的。不过,我还是建议你把这本书换了。这是一个非常好的系列:https://github.com/getify/You-Dont-Know-JS
这本书提供了非常好的例子和用法+解释:https://addyosmani.com/resources/essentialjsdesignpatterns/book/
相关文章:
- Node.js-模块导出静态变量
- 使用变量而不是静态字符串搜索数组
- 在angularJS中定义函数内部的静态变量
- jsp内部html中的Javascript静态变量
- 创建静态(类)变量-最佳实践
- 是否可以在window.onresize上更改jQuery插件的静态变量
- 如何使用 dedeclare 定义 dojo 静态变量或静态对象
- 为什么我可以在ServiceNow中访问示例脚本化Web服务(订购黑莓)并返回静态变量,但它没有订购黑莓
- 为什么 Object.create 使我的私有变量成为静态变量
- 使用静态变量初始化同一类中的变量
- 具有 John Resig 简单类模式的静态变量
- 使用原型模拟静态变量
- 如何在 javascript 中使用 const 关键字 (ecma 6) 和函数静态变量
- 为什么要在函数定义之外引用静态变量(函数属性)
- 设置超时函数回调静态变量
- 使用 get 变量缓存静态 HTML 页面
- Javascript 类中的静态变量
- 更新 JavaScript 函数中的静态变量
- 一个静态 php 变量,只分配一次,永远不会更改
- Javascript - 使用闭包递增静态函数变量模拟