gpt4 book ai didi

javascript命名空间定义自引用

转载 作者:行者123 更新时间:2023-12-03 11:59:56 25 4
gpt4 key购买 nike

我正在尝试定义一个 javascript 命名空间,但在命名空间内我有一些对象是基本类的扩展(使用主干和下划线):

namespace = {
subspace: {
A: some_class.extend({...}),
B: A.extend({...})
}
}

但这会产生一个问题,因为 A 尚未定义。在这种情况下,最佳做法是什么?此外,我在这个命名空间中有多个子空间,后续子空间无法引用前一个子空间。

namespace = {
subspace: {
A: some_class.extend({...}),
B: A.extend({...})
},
subspace2: {
some_function: function(){
<how do i create an instance of A for example? >
}
}
}

最佳答案

您应该使用辅助函数来管理它。这是 Stoyan Stefanov“JavaScript 模式” 的实现。

将应用程序全局对象视为MYAPP

以及添加命名空间的功能:

MYAPP.namespace('MYAPP.modules.module1')

这是命名空间方法的示例实现:

MYAPP.namespace = function(ns_string) {
var parts = ns_string.split('.'),
parent = MYAPP,
i;

if (parts[0] === 'MYAPP') {
parts = parts.slice(1);
}

for (i=0; i<parts.length; i++) {
if(typeof parent[parts[i]] === 'undefined') {
parent[parts[i]] = {}
}
parent = parent[parts[i]];
}

return parent;
}

关于javascript命名空间定义自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457150/

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