gpt4 book ai didi

javascript - 检查 JavaScript 命名空间的更好方法

转载 作者:可可西里 更新时间:2023-11-01 01:50:55 25 4
gpt4 key购买 nike

现在我有一个模块,它遵循一长串 namespace ,例如:

TOP.middle.realModuleName = function () { /*...*/ }

我需要在一个页面上使用这个模块,我不确定这个页面是否包含命名空间Top.middle。所以我必须做类似的事情:

if (typeof TOP !== 'undefined' && TOP.middle && TOP.middle.realdModuleName) {
new TOP.middle.realModuleName();
}

我认为 if 语句看起来非常冗长。有人对如何为这种情况编写更好的参数检查模式有建议吗?

最佳答案

试试这个简单的辅助函数:

function exists(namespace) {    
var tokens = namespace.split('.');
return tokens.reduce(function(prev, curr) {
return (typeof prev == "undefined") ? prev : prev[curr];
}, window);
}

它接受一个String作为输入,如果存在则返回对象。你可以像这样使用它:

var module = exists("TOP.middle.realModuleName");

例如:

exists("noexist"); // returns undefined
exists("window"); // returns DOMWindow
exists("window.innerHeight"); // returns Number
exists("window.innerHeight.toString"); // returns Function
exists("window.innerHeight.noexist"); // returns undefined

它也适用于计算结果为 false 的表达式:

testNum = 0;
testBool = false;
testNull = null;

exists("testNum"); // returns 0
exists("testBool"); // returns false
exists("testNull"); // returns null

关于javascript - 检查 JavaScript 命名空间的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7639268/

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