我想知道是什么区别(优点/缺点)之间以下模式。如何创建基于子模块的关于模块模式?我的目标是将我的js组织成多个文件,这些文件是延迟加载但有一个命名空间。例如:SO.global(global.js)SO.global.registration(registration.js)varSO=function(){varCONSTANT='Z';functioncreateX(){alert("createX");}functiongetY(){alert("getY");}return{create:createX,get:getY}}();//SO.createX();//SO.getY
我尝试加载一些外部.js文件,并且有一些无法解决的命名空间冲突。我想以某种方式在它们自己的上下文中加载一些文件,将“this”从指向窗口对象替换为某个自定义命名空间。例子:首先.js:name="first";second.js:name="second";在我看来,这种技巧非常有用。有可能吗?编辑似乎替换“this”并不能解决问题,因为它不是javascript中标识符解析的默认上下文。这是我的测试代码:varfirst={};varsecond={};(function(){name="first";}).call(first);(function(){name="second";
我一直在将提交事件绑定(bind)到表单,并确保它们不会破坏表单,像这样使用jQuery:jQuery('form').submit(function(e){varform=this;e.preventDefault();alert('1');setTimeout(function(){alert('2');form.submit();},1000);});这一切都很好,除了,如果出于某种原因前端开发人员给这个表单的子输入一个id="submit",这会中断,因为form.submit()抛出JavaScript错误(在Chrome中,'UncaughtTypeError:Proper
我正在尝试通过TypeScript中的函数扩展默认的JQuery接口(interface)和默认对象jQuery代码///namespaceMyNameSpace{var$=jQuery;exportinterfaceJQuery{test(options:Object):JQuery;}$.fn.test=function(options:Object):JQuery{if(this.length===0){console.log('Error!');returnthis;}console.log(options);returnthis;}exportvartestBody=func
我正在尝试理解第三方Javascript代码。但是我无法弄清楚以下编码风格的用途。functionA(){}A.Prop='23';A.generate=function(n){//dosomething}然后它就被用作:A.generate(name);谁能解释这段代码的作用。我了解一些OOJavascript,但我想知道这是否是扩展具有新属性的对象的任何其他形式。尽管我没有看到使用任何“new”关键字来创建对象。有什么想法吗?谢谢, 最佳答案 他们正在创建一个命名空间。有很多方法可以做到这一点,所有方法都或多或少是等效的:A={
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我已经为我的javascript命名空间。是否有关于命名空间名称的大小写和大小写的约定?是否可以使用MyNamespace形式的命名空间,以便在访问属性或函数时使用MyNamespace.myProperty?
在为Firefox开发扩展时,我一直在研究全局命名空间污染,我想在我的扩展中尽可能避免它。有几种解决方案,但一般来说,这些解决方案似乎只为您的扩展声明一个全局变量,并将所有内容放入其中。因此,您只需向全局命名空间添加一个额外的变量,这还算不错。顺便说一句,有人向我提出了一个解决方案,可以避免将任何额外变量放入全局命名空间;将所有内容包装在一个函数中。这里的问题是在您的XUL覆盖层中没有任何东西可以引用。您必须在叠加层中声明元素,然后在JS中添加大量的addEventListener来替换像oncommand="..."这样的东西在XUL中。我不想这样做;我绝对希望我的XUL在XUL本身
我被要求将我们的一些PHP代码移植到JavaScript,以便我们的更多逻辑在客户端运行。我想要的是一个简单的例子来展示:包含两个类(“Master”和“Slave”)的命名空间(“Package”)“Master”类有一个属性“p”、一个函数“m”和一个采用单个参数设置“p”初始值的构造函数“Slave”类从“Master”类继承了“p”、构造函数和“m”我不介意使用某种现有框架,但它必须是轻量级的——理想情况下不超过200LOC(未缩小)。这是我的尝试,FWIW:varPackage={};Package.Master=function(pValue){this.p=pValue;
命名空间曾经是ECMAScript(旧的ECMAScript4)的考虑因素,但被取消了。正如BrendanEich在thismessage中所说:Oneoftheuse-casesfornamespacesinES4wasearlybinding(usenamespaceintrinsic),bothforperformanceandforprogrammercomprehension--nochanceofruntimenamebindingdisagreeingwithanyearlierbinding.Butearlybindinginanydynamiccodeloadings
我不确定哪个是更好的命名空间约定。varApp={};//globalvariable,therootofournamespace(function(){App.something=function(){}})();或(function(){window.App={};//globalvariable,therootofournamespaceApp.something=function(){}})();window.App和varApp都是全局变量,所以两种约定都能达到相同的结果,但哪个更好? 最佳答案 唯一的区别是在第一个变体中