Javascript

时间:2016-10-14 22:37:30

标签: javascript oop

我是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;
})();

我很困惑为什么这本书会省略这个问题的解决方案,并采用惰性方法。我坚信使用"严格模式"我所有的代码。

1 个答案:

答案 0 :(得分:1)

是的,你的重写是正确的。我会建议你改变这本书。这是一个非常好的系列: https://github.com/getify/You-Dont-Know-JS

本书提供了很好的例子和用法+解释: https://addyosmani.com/resources/essentialjsdesignpatterns/book/