这些脚本之间的效率有差异吗
Is there a difference in efficiency between these scripts?
理论案例。函数init ()
可能并不总是在页面上调用。我想知道的是,从速度/效率的角度来看,这两个脚本之间是否存在差异?Class
是单例的事实会对加载速度/处理量产生影响吗?
脚本1:
// Class is a singleton.
var Class =
{
myFunctionOne : function ()
{
}
myFunctionTwo: function ()
{
}
}
function init ()
{
//Do some fancy stuff
Class.myFunctionOne();
Class.myFunctionTwo();
}
脚本2:
function Class ()
{
this.myFunctionOne = function ()
{
}
this.myFunctionTwo = function ()
{
}
}
function init ()
{
var myClass = new Class();
//Do some fancy stuff
myClass.myFunctionOne();
myClass.myFunctionTwo();
}
我会说是的,当init()
是而不是在页面上被调用时,您的第二个脚本具有性能优势。原因如下。
在第一个例子中,每次加载页面时都会解析对象文字:
var Class =
{
myFunctionOne : function () { ... }
}
将构建Class
对象,每个键都设置为一个函数对象。无论这些"方法"是否被实际调用,都会产生这种开销(不过,某些JavaScript编译器可能会在此处实现优化,如"实时编译",因此实际性能增益可能因浏览器而异)
在第二个例子中:
function Class ()
{
this.myFunctionOne = function () { ... }
}
每次调用Class
时,都会运行myFunctionOne
行,在您的情况下,通过new
运算符。该成本将在每次实例化Class
时产生,而不是每次页面加载一次。然而,您已经声明这个类使用的是singleton模式,所以您无论如何都只有一个实例。
如果您担心初始页面加载/处理时间,为什么还要在页面上显示代码呢。动态加载JavaScript。
function init() {
if(!document.getElementById("SingletonClass")) {
var dynScript = document.createElement('script');
dynScript.id = "SingletonClass";
dynScript.type = "text/javascript";
dynScript.src = "SingletonClass.js";
document.getElementsByTagName('head')[0].appendChild(dynScript);
}
}
或者简单地使用jQuery getScript函数。http://api.jquery.com/jQuery.getScript/
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 显示时间的脚本
- ng应用程序使脚本无限运行
- 这些脚本之间的效率有差异吗
- javascript矩阵脚本,由于某些原因效率低下/速度较慢
- 使用 php 加载脚本的效率