Javascript中的静态私有变量

Static Private Variables in Javascript

本文关键字:变量 静态 Javascript      更新时间:2023-09-26

我是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/