在JavaScript中缩短成员方法内的对象名
我正在使用对象文字模式编写许多JavaScript小部件和小应用程序 我要做的一件事是在其中一个方法中,我将应用程序名称缩写为“app” 我这样做主要是因为它更容易编写,而且我知道这会带来一点性能提升在JavaScript中缩短成员方法内的对象名,javascript,javascript-framework,Javascript,Javascript Framework,我正在使用对象文字模式编写许多JavaScript小部件和小应用程序 我要做的一件事是在其中一个方法中,我将应用程序名称缩写为“app” 我这样做主要是因为它更容易编写,而且我知道这会带来一点性能提升 var ApplicationName = { property : "foo", methodOne : function(){ var app = ApplicationName; return app.propert
var ApplicationName = {
property : "foo",
methodOne : function(){
var app = ApplicationName;
return app.property;
},
init: function(){
var app = ApplicationName;
app.methodOne();
}
}
ApplicationName.init();
这种方法有问题吗?你的方法没有问题。我不知道以下模式是否也能帮助您:
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()
方法,但我想它无论如何都是:-)这种方法没有问题。事实上,建议使用较小的javascript文件,因为它们可以节省服务器和客户端的时间和带宽。然而,如果你介意站点中的小文件,你最好使用网络上可用的几种工具之一压缩javascript,而不是应用这样的小更改。如果您有一个具有Ctrl+Space(即自动完成!)功能的好IDE,那么将它们全部输入应该并不困难。您可以将压缩留给压缩工具
正如您所说,性能的提高可能会达到几毫秒,因此通常人们也不会介意这一点
总的来说,您编写的内容是安全的,但性能或文件大小没有重大变化,因此人们不想选择它。我认为您的方法没有任何问题,但严格来说没有必要(您可以进一步缩短它)。像这样调用
init
:
ApplicationName.init()
…将init中this
的值设置为ApplicationName
。这允许您执行以下操作:
var ApplicationName = {
property : "foo",
methodOne : function(){
return this.property;
},
init: function(){
return this.methodOne();
}
}
@雷诺斯-这看起来像什么坏代码?这是JavaScript中非常常见的模式。获取app
和ApplicationName
之间的性能差异可以忽略不计。另外,在init
中设置app=ApplicationName
感觉相当难看。如果是return(app={…})
@Raynos谢谢你的反馈。啊,有道理。谢谢。我被“this”关键字挂断了。“This”指的是函数所应用到的对象,对吗?函数内部的This
的值取决于函数的调用方式。无论何时将函数作为对象上的方法调用,该函数中的this
值就是调用该方法的对象。更多阅读: