gpt4 book ai didi

javascript - 在对象中封装Javascript代码会影响性能吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:43 24 4
gpt4 key购买 nike

我想知道将 JavaScript 代码的主体封装在一个对象中效率更高还是更低?这样,您的程序的整个范围将与窗口等其他范围分开。

例如,如果我在 JavaScript 文件中有以下代码:

/* My main code body. */
var somevar1=undefined;
var somevar2=undefined;
var somevarN=undefined;

function somefunction(){};

function initialize(){/* Initializes the program. */};
/* End main code body. */

我可以改为将主要代码体封装在一个对象中:

/* Encapsulating object. */
var application={};
application.somevar1=undefined;
application.somevar2=undefined;
application.somevarN=undefined;

application.somefunction=function(){};

application.initialize=function(){/* Initializes the program. */};

我的逻辑是,由于 JavaScript 会搜索范围内的所有变量,直到找到正确的变量,因此将特定于应用程序的函数和变量保留在它们自己的范围内会提高效率,尤其是在有很多函数和变量的情况下。

我唯一担心的是,这是一种不好的做法,或者这可能会增加新“应用程序”范围内的变量和函数的查找时间。如果这是不好的做法或完全没用,请告诉我!谢谢!

最佳答案

我不知道性能影响是什么(我怀疑无论哪种方式它们都可以忽略不计,但如果你真的担心,测试它),但在 JavaScript 中很常见的做法是将代码块保存在自己的代码中范围,而不是将所有内容都放在全局范围内。

主要的好处是降低了在全局范围内意外覆盖变量的风险,并使命名更容易(即你有 window.application.initialize 而不是 window.initialize_application).

您可以使用自调用函数来为一段代码创建一个范围区域,而不是上面的实现。这被称为 the module pattern .

这有一个额外的好处,就是允许您创建“私有(private)”变量,这些变量只能在模块内访问,因此不能从运行在同一全局对象中的其他代码访问:

/* Encapsulating object. */
var application=( function () {
var someprivatevar = null// This can't be accessed by code running outside of this function
, someprivatefunction = function () { someprivatevar = someprivatevar || new Date(); };

return {
somevar1: undefined
, somevar2: undefined
, somevarN: undefined
, somefunction: function(){}
, getInitialized: function () { return someprivatevar; }
, initialize: function (){/* Initializes the program. */ someprivatefunction(); }
};

})();

application.initialize();
application.getInitialized();// Will always tell you when application was initialized

关于javascript - 在对象中封装Javascript代码会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26529172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com