我是Javascript的新手(即正确学习Javascript)。我正在阅读"静态私有变量"在第7章的Web开发人员专业Javascript第3版中。
我收到了这段代码,但我觉得这不太理想:
(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;
})();
我很困惑为什么这本书会省略这个问题的解决方案,并采用惰性方法。我坚信使用"严格模式"我所有的代码。
答案 0 :(得分:1)
是的,你的重写是正确的。我会建议你改变这本书。这是一个非常好的系列: https://github.com/getify/You-Dont-Know-JS
本书提供了很好的例子和用法+解释: https://addyosmani.com/resources/essentialjsdesignpatterns/book/