缩短JavaScript中成员方法内的Object名称

时间:2011-12-09 15:58:41

标签: javascript javascript-framework

我正在使用Object Literal模式编写大量JavaScript小部件和小型应用程序。

我做的一件事就是在其中一种方法中,我将应用程序名称缩写为“app。”

我之所以这样做主要是因为它更容易编写,而且我也理解它的性能会有很小的提升。

    var ApplicationName = {
       property : "foo",
       methodOne : function(){
          var app = ApplicationName;
          return app.property;
       },
       init: function(){
          var app = ApplicationName;
          app.methodOne();
       }
    }
ApplicationName.init();

这种方法有什么问题吗?

3 个答案:

答案 0 :(得分:2)

我认为你的方法没有任何问题,但并不是绝对必要的(你可以进一步缩短它)。像这样调用init

ApplicationName.init()

...将thisinit的值设置为ApplicationName。这允许你这样做:

var ApplicationName = {
    property : "foo",
    methodOne : function(){
        return this.property;
    },
    init: function(){
        return this.methodOne();
    }
}

答案 1 :(得分:0)

您的方法没有问题。我不知道以下模式是否也可能对您有所帮助:

var ApplicationName = (function () {
    var app;
    return {
        property: "foo",
        methodOne: function() {
            return app.property;
        },
        init: function() {
            app = ApplicationName;
            app.methodOne();
        }
    }
})();

ApplicationName.init();

console.log(ApplicationName.property); // "foo"

这样您只需要对ApplicationName进行一次别名。它确实意味着必须首先调用init()方法,但我想它无论如何: - )

答案 2 :(得分:0)

这种方法没有问题。事实上,建议使用较小的javascript文件,因为它们可以节省服务器和客户端的时间和带宽。但是,如果您介意网站中的小文件,则可以使用网络上提供的多种工具之一来压缩您的javascript,而不是应用这些小的更改。如果你有一个带有Ctrl + Space(即自动完成!)功能的好IDE,那么输入它们并不困难。您可以将压缩保留在压缩机工具中。

你所说的性能提升可能会好几毫秒,所以通常人们也不会这么想。

总的来说,你所写的内容是安全的,但是性能或文件大小没有重大变化,因此人们不愿意这样做。