gpt4 book ai didi

javascript - 关于使这段 Javascript 代码更好的建议?

转载 作者:搜寻专家 更新时间:2023-11-01 05:17:52 25 4
gpt4 key购买 nike

我正在尝试找到一种在特定命名空间 (dpcom) 下添加函数的方法。这可能是点符号,具体取决于用户在他们的 javascript 文件中做了什么。所以基本上,我希望他们做的是这样的:

dpcom.library('something.foo.funcName', function() {
// Code goes here.
})

他们之后可以像这样调用他们的东西:

dpcom.something.foo.funcName();

这将执行他们在上面定义的代码。我想要帮助改进它的代码在这里(它使用 jQuery):

dpcom.library = function(name, func) {
root = dpcom;
objects = name.split('.');
lastElement = objects[objects.length - 1];

$(objects).each(function(idx, elem) {
if (elem == lastElement) {
root[elem] = func;
} else if (!root[elem]) {
root[elem] = {}
}
root = root[elem];
});
}

这应该处理可能的点符号并在我的命名空间内创建对象(如果它们尚不存在)(我不想覆盖任何已声明的对象)。

我上面的代码似乎工作得很好,但我觉得我可以让它变得更好,但我的大脑没有告诉我在哪里......有人想试一试吗?

最佳答案

您应该能够使用 shift() 以更吸引人的方式执行此操作:

dpcom.library = function(name, func) {
var root = dpcom,
objects = name.split('.'),
elem;

while (elem = objects.shift()) {
if (objects.length) {
if (!root[elem])
root[elem] = {};
root = root[elem];
}
else
root[elem] = func;
}
}

这样,您就可以放弃 jQuery 要求。另外,不要忘记使用 var 关键字显式声明变量。

根据你对性感代码的定义,你也可以替换这个 block :

        if (objects.length) {
if (!root[elem])
root[elem] = {};
root = root[elem];
}

与:

        if (objects.length) 
root = !root[elem] ? root[elem] = {} : root[elem];

关于javascript - 关于使这段 Javascript 代码更好的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637222/

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