JavaScript命名空间是什么 命名空间是什么?命名空间有什么作用封装一个自己的日期命名空间对象为社么要封装一个日期命名空间对象命名空间是什么? 命名空间本质上是一个普通的对象 将有关联性的变量和函数封装起来看,做为该对象的属性或方法 命名空间有什么作用 解决变量污染的问题 变量污染: 占用某个变量导致后续无法使用此变量(标识)的问题 例如 多人写作开发写了相同的变量名引起冲突 let obj = {name: '秦始皇',age: 18,say: f...
命名空间的意思是管理变量,防止污染全局,适用于模块化开发 以前的做法(现在不在使用)var obj = {department1: {lyj: ,...},department2: {ccc: },... }现在新的方法(闭包)var initDeng = (function() {var name = abcfunction callName() {console.log(name)}return function() {callName()} }()) var initZhang = (function() {var name = deffunction callName() {console.log(name)}return function() {callName()} }())...
Javascript只有函数作用域,什么块儿啊、神马文件啊统统都认为是一个命名空间的,有时候因为一些重名问题导致的错误让人莫名其妙,难以调试解决。 在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:var sayHello = function() {return Hello var; };function sayHello(name) {return Hello function; };sayHello();最终结果为> "Hello var" 再来几个例子 ...
我正在构建自己的第一个真正的JS应用(塔防游戏),并且我的应用结构一直在挣扎.我读过关于不乱扔全局名称空间的信息,因此我想将我的所有代码保留在一个全局变量中,同时仍然能够将我的代码拆分为文件(模块).我已经做到了这一点,但是我怀疑我是否会按照正确的方式进行操作. 我现在遇到的实际问题是,当我创建“实体”对象(通过实际上是子模块方法的构造函数)时,名称空间不是我期望的app.entity.type_1,而是app.entity.entity .type_1/* ...
我正在研究自举扩展.看看其中一些扩展的代码,我看到了很多变量,常量和函数声明. 它们都在window对象中声明了吗?命名空间污染/冲突是否存在问题? 我将每件事都包装在我完成的覆盖扩展中的一个对象/命名空间中.自举扩展在这方面是否有所不同? 我注意到所有的bootstrapped.js都使用相同/标准的函数名.这是否意味着自举扩展名已被沙盒化或封闭了其范围?解决方法:bootstrap.js范围Are they all declared in window object? Isn’t t...
我试图将TypeScript中的以下代码编译为JavaScript:namespace MyNamespace {class MyClass {public test() {return 1;}} }如果我将关键字命名空间替换为模块,它仍然会生成完全相同的JavaScript代码.那么,模块和命名空间之间有什么区别?何时应该选择一个呢?解决方法:So what is the difference between a module and namespace and when should I choose one over another它们完全相同.模块导致与本机JavaScript(例如ES6模块)混淆...
我正在使用此处提出的建议(http://www.odetocode.com/articles/473.aspx),使用模拟的Namespacing和原型制作JavaScript AJAX网络聊天系统. 在我的一种原型方法中,我在jQuery中调用$.ajax方法.然后,我要做的就是将返回的JSON数据传递到JavaScript网络聊天命名空间中的方法中. 问题似乎是因为我已经创建了JavaScript网络聊天的实例,无法直接在其中调用方法,因为我需要通过实例来解决它. 以下代码中的关键部分是success: function(data...
TL; DR摘要:对SVG元素使用setAttribute而不是setAttributeNS是否合适? 细节:考虑一下嵌入在XHTML5中的SVG图像,该图像使用JavaScript动态创建图形并向图形添加元素:http://phrogz.net/svg/svg_in_xhtml5.xhtml 由JavaScript创建并附加到< svg>的SVG元素.元素必须使用…创建var el = document.createElementNS("http://www.w3.org/2000/svg",'foo');…代替…var el = document.createElement('foo');…以便将它们视为SVG元素并在...
我正在尝试编写一个函数,该函数接受表示命名空间的字符串(例如“MyCompany.UI.LoginPage”),并将命名空间的每个段定义为对象(如果它尚不存在).例如,如果“MyCompany.UI.LoginPage”不是对象,它将评估此:MyCompany = {}; MyCompany.UI = {}; MyCompany.UI.LoginPage = {};我想通过枚举“namespace”(string)参数的每个字符并定义每个对象作为枚举到达句点字符来实现此目的. 如何在JavaScript中枚举字符串的字符?解决方法:您可以使...
对于我的Web应用程序,我在JavaScript中创建一个名称空间,如下所示:var com = {example: {}}; com.example.func1 = function(args) { ... } com.example.func2 = function(args) { ... } com.example.func3 = function(args) { ... }我也想创建“私有”(我知道这在JS中不存在)命名空间变量,但我不确定什么是最好的设计模式. 可不可能是:com.example._var1 = null;或者设计模式是否是别的?解决方法:闭包经常像这样用来模拟私有变量...
我正在尝试将我的插件提交到mozilla网站,但我得到了这个该死的警告: 代码(在mf_options.js中)非常简单(我认为问题只在“开始存储”和“结束存储”之间:// start Storage var url = "http://mafiaafire.com"; var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); var ssm = Components.classes["@mozilla.org/scriptsecuritymanager;1"].getService(Components....
如何将一个Javascript命名空间分配给HTML元素并调用该元素上所述命名空间中定义的函数? 我问了另一个问题:Attaching JavaScript to the prototype of an ASCX client side instance 上一个问题回答了如何做到这一点,但现在我很好奇这是如何在纯Javascript / HTML级别上工作的.我并没有更接近于搞清楚它. 假设我有一个只包含文本框的HTML页面:<html><body><div><input type="text" id="MyTextBox" /></div></body> </html>在浏览...
使用下面的代码,除了手动指定之外,有没有办法只导出名称不以下划线开头的函数和变量?var myapp = myapp || {}; myapp.utils = (function() {varCONSTANT_A = "FOO",CONSTANT_B = "BAR";function func() {}function _privateFunc() {}return {//return all variables and functions whose name does not have the "_" prefix.} }());解决方法:您的想法需要能够列出本地范围内的所有变量.不幸的是,JavaScript无法做到这一点.见this ...
我很了解JavaScript的基本概念,但是我无法理解一些高级概念.我想知道的概念是命名空间.什么时候有用?我该怎么用?我很感激任何解释.解决方法:我将用一个例子来回答. 你想要填充一个数字,所以它是2位数,function pad(x) {return ('00' + x).slice(-2); } pad(3); // "03"您在网站上有一些其他代码可以填充n位数字function pad(x, n) {x = '' + x;n = n + 1 - x.length;if (n < 0) n = 0;return new Array(n).join('0') + x; } pad(...
我在coffeescript中编写了以下代码,它在服务器端使用了socket.io和node.js 服务器io.of("/room").authorization (handshakeData, callback) ->#Check if authorizedcallback(null,true) .on 'connection', (socket) ->console.log "connected!"socket.emit 'newMessage', {msg: "Hello!!", type: 1} socket.on 'sendMessage', (data) ->@io.sockets.in("/room").emit 'newMessage', {msg: "New Message!!", type: 0} 客户socket =...