问题标签 [javascript-namespaces]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何将模块分配给 jsdoc 中的命名空间?
我们将 jsdoc 用于一个非常依赖 javascript 的项目。为了获得代码文档,我们让 jsdoc 通过 grunt 构建 html 文件。
到目前为止,我们使用“memberof”关键字成功地将属性和方法分配给模块,如下所示:
例子
这为我们创建了一个非常好的 html 文档,其中列出了所有模块。如果我在那里单击其中一个模块,我会看到该模块的所有属性和方法。到目前为止,一切都很好。
但真正的问题是我们还希望将模块分配给某些命名空间。我们如何做到这一点?jsdoc 是否完全支持这一点?
javascript - 是否有任何衡量 JavaScript 中全局命名空间污染导致的性能损失的方法?
我在编写 JavaScript 时学到的第一件事就是在全局命名空间上设置变量window
并污染全局命名空间是不好的做法。
环顾四周,有很多文章,因为有一些关于为什么它被认为是不好的做法以及如何测量存储的对象数量的问题(这里)。
但是,即使我可以获得存储在其中的对象的数量,window
我也从未读过任何关于 cluttering 对性能造成的实际影响的信息window
。
问题:
是否有任何示例显示名称空间污染如何降低性能?
javascript - 如何在 JS 中独立于上下文(浏览器、节点)分配读取的根变量?
我有一个将对象分配给自定义命名空间的函数,而不会覆盖路径中的现有对象,有点像mkdir -p
,例如:
原型将类似于:
因此,您创建namespace
ontarget
并将其分配object
给它。显然,如果com.stackoverflow
已经存在,target
您不想覆盖它/初始化它。
此方法将主要用于浏览器上下文中,因此window
我希望它不是作为目标传递的,而是target
可选的,并且默认为根元素。
在实现中的某个地方,我有:
然后recursiveElement
将分配给命名空间中的第二个对象,第三个对象,依此类推,直到.
命名空间中不再有单独的元素。
如果我想将代码更改为
应该root
是什么?
我们不默认的原因root
是window
为了让这个库更通用一点,并避免将它绑定到浏览器上下文。我知道这不是什么大问题,但不是仅仅更改代码以适应它,或者只是放弃并强制第三个参数,我想知道那里是否有我不知道的怪癖。
javascript - JavaScript 命名空间和 IE8,null 或不是对象错误
我正在开发一个应该与现代浏览器兼容的应用程序,但现在我们要求它应该支持旧浏览器,如 IE8、IE9..
我在开发应用程序时遵循了命名空间模式。像下面这样..
var myApp = myApp || {};
myApp.Globals = {}
我也提到过 Addy Osmani 的博客。
它在 IE10+ 上运行良好,但对于 IE8 和 IE9,变量未定义。
例如,如果我控制台记录这些命名空间,它会返回 undefined 并出现以下错误:
myApp.Globals is null or not an object
有没有办法在 IE8 和 IE9 中修复它们?
javascript - Lightningjs 在单独的窗口命名空间中加载和访问 Js 的方法?
我参考 [ https://github.com/olark/lightningjs]将 js 加载到单独的窗口命名空间中。
我已经测试了一个名为 sample.js 的脚本文件,如下所示,需要在单独的窗口命名空间中加载。
我在我的 html 中包含了 Lightningjs-embed.js 和 lightining-bootstrap.js。
在控制台中,我可以查看两个对象,一个是 Lightningjs,另一个是 piratelib。我期待在调用piratelib(“testjs”)后在控制台中获得“样本”。但我没有在控制台中获得样本。如果在控制台中尝试 piratelib("testjs") 它会显示
而不是 sample.js 中的实际函数
建议我一些想法在单独的 window.namespace 下加载 js 以避免 js 冲突。澄清我是否使用 Lightningjs 以正确的方式调用函数。提前致谢。
typescript - 打字稿类商店
也许我没有在 Typescript 中正确使用命名空间,但这是我要解决的问题。
创建类时,我需要使用如下的要求来引用我的所有其他文件。
如果我希望能够像这样构造类,每次我需要添加这两行:
因为我的项目打算很大,而且我已经需要几个类,所以我将拥有一个名为 ClassStore.ts 的文件,该文件将引用所有类,因此我只需要引用这个文件一次。
是否有可能做到这一点?我错过了命名空间的东西吗?
请注意,我尝试从包含多个导出的文件中导出导入类和接口。一种用于接口,一种用于实现。
这是我的项目(DependencyClass.ts)的典型文件架构:
这是我在“ClassStore”中尝试过的:
我收到以下错误:未捕获的类型错误:无法读取未定义的属性“DependencyClass”。
谢谢您的帮助。
javascript - JavaScript 命名空间对象:脚本包含顺序
我似乎遇到了 JavaScript 中名称间距的问题。
我已将我的 javascriptobjects
分成单独的文件。
每个文件都以命名空间定义开始:
如果我包含该对象,该对象调用它之后包含在文件中的对象的某些方法 - 我得到 TypeError 说给定对象不存在。
我遇到的问题示例:
文件 1 Url.js(首先包含在 html 文档中):
文件 2 Helper.js(包含在 html 文档中的第二个):
当使用我调用时,MySystem.Url.init();
我得到:
当我颠倒包含文件的顺序时 - 一切正常。
这显然是一个非常简单的例子,但我的系统包含更多objects
——所有这些都在它们自己的单独文件中。
这个问题的最佳解决方法是什么?
javascript - 如何使用 JavaScript 命名空间?
我正在尝试找出 JavaScript 命名空间......我想编写几个函数并将它们保护在如下命名空间中......但我认为我不太明白......这是一个太简单的问题,但它会是对我来说很清楚,我想如果我明白为什么那不起作用..
这是我正在尝试的 exp:
调用我的应用程序:
我认为 MyApp 的创建是正确的,但我不确定调用和触发 getTxt 函数..
这么称呼:
并不意味着触发 x.click 功能..?为什么它会转动物体?
我在这里做错了什么?谢谢!
javascript - 如何一次触发多个命名空间函数?
是否可以一次调用执行命名空间的所有功能?
经验:
它适用于上面的代码..
我们可以一次调用就触发 addStyle 和警告函数吗?
我尝试过/想到的:
这不起作用..我怎么能做这样的事情?
现场试用:http: //jsfiddle.net/C7JJM/82/
先感谢您!