转载 猫猫小屋http://www.maomao365.com/?p=823

在C#中有namespace概念,java中有package的概念,有了这些概念之后,在系统的运行时,每一个方法就会拥有唯一的访问路径
namsepace.class.object,这样就可以避免由于object重名所导致的问题.
由于javascript是一种解释型语言,在javascript中,如果定义两个同名函数或者变量,系统会用最后一个函数或变量来替换前一个函数和变量,
如果是一个的单人开发的系统,则不会产生很多异常,因为可以人为的控制这些命名的唯一,如果是大型多人协同开发系统,则可能产生很多异常,增加程序的调试难度。

举例说明命名空间必要性

例如我们编写一个页面 引入jquery框架,然后我们在页面里面自定义一个$函数,那么$ 函数可能会失效,或者产生莫名其妙的现象

命名空间使用

< input type="button" value="命名空间使用" onclick="(new namespace()).$();"/>

< script type="text/javascript">
function namespace(){
this.$=function(){
alert(‘命名空间使用!’);
}
}
< /script>

这种写法,其实就是在namespace下定义了一个$

简化每次都 new namespace
< input type="button" value="命名空间使用" onclick="t.$();"/>

< script type="text/javascript">
(function namespace(){
this.$=function(){
alert(‘命名空间使用!’);
}
window.t ={};
window.t=this;
})();
< /script>

进阶篇

在一个命名空间里面可以像 C# java一样包含很多变量和方法

< input type="button" value="命名空间使用" onclick="t.$();"/>
< input type="button" value="命名空间简化调用" onclick="method3();"/>
< input type="button" value="命名空间method2使用" onclick="t.method2();"/>
< input type="button" value="命名空间method3使用" onclick="t.method3();"/>
< input type="button" value="命名空间a变量赋值使用" onclick="t.a=999;"/>

< script type="text/javascript">
(function namespace(){
this.$=function(){
alert(‘命名空间使用!’);
}
this.method2=function(){
alert(“this method 2!”);
}
this.a=”888″;
this.method3=function(){
alert(“命名空间内部变量:a”+a);
}

window.t ={};
window.t=this;
window.t.method3=method3;
})();
< /script>

如何实现javascript js 类命名空间的写法的更多相关文章

  1. JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...

  2. JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...

  3. JavaScript学习总结(十四)——JavaScript编写类的扩展方法

    在​J​a​v​a​S​c​r​i​p​t​中​可以使​用​类的p​r​o​t​o​t​y​p​e属性来​扩​展​类的属​性​和​方​法,在实际开发当中,当JavaScript内置的那些类所提供的动态 ...

  4. js类的笔记

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 自己手写的自动完成js类

    在web开发中,为了提高用户体验,会经常用到输入框的自动完成功能,不仅帮助用户进行快速输入,最重要的是帮助那些“记不全要输入什么”的用户进行选择.这个功能有很多插件已经实现了,为了适应项目的特殊需求, ...

  6. Atitit.javascript 实现类的方式原理大总结

    Atitit.javascript 实现类的方式原理大总结 1. 实现类的式::构造方法方式:原型方式:构造方法+原型的混合方式 1 2. 原型方式(function mode)经典式..实现属性推荐 ...

  7. (转载)Javascript定义类(class)的三种方法

    因在公司内部培训中有讲解到JS类的概念,不甚明白,于是进行了google找到了相关的介绍说明,现将其摘抄下来,以作记录. 在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对 ...

  8. 关于JavaScript的namespace命名空间

    写C或者JAVA习惯的人写JavaScript时可能会发现JavaScript并没有命名空间这一概念,当然如果没有接触过命名空间的程序猿(比如写js,PHP,Python)也可能对命名空间不关注或者不 ...

  9. javascript 定义类(转载)

    Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门 ...

随机推荐

  1. springboot redis(单机/集群)

    前言 前面redis弄了那么多, 就是为了在项目中使用. 那这里, 就分别来看一下, 单机版和集群版在springboot中的使用吧.  在里面, 我会同时贴出Jedis版, 作为比较. 单机版 1. ...

  2. 【原创】驱动加载之CreateService

    SC_HANDLE WINAPI CreateService( _In_ SC_HANDLE hSCManager, _In_ LPCTSTR lpServiceName, _In_opt_ LPCT ...

  3. https跨域到http问题解决

    整体结构 用户--https-->Nginx--http-->Tomcat 页面中包含了iframe,iframe的src也是Https的,但是当frame里面的内容表单提交后tomcat ...

  4. Spring Cloud Stream如何消费自己生产的消息?

    在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...

  5. 乐观锁机制解决多层嵌套异步ajax问题

    前言 在项目中我们通常需要使用ajax异步嵌套去请求数据并做数据的展示,当我们多次快速的多次的发起ajax,因为ajax是异步的,每个ajax触发回调的时间都是不可控的,这样就会造成前面发起的ajax ...

  6. RNN入门(三)利用LSTM生成旅游点评

    介绍   前几天,某个公众号发文质疑马蜂窝网站,认为它搬运其它网站的旅游点评,对此,马蜂窝网站迅速地做出了回应.相信大多数关注时事的群众已经了解了整个事情的经过,在这里,我们且不论这件事的是是非非,也 ...

  7. C#调用存储过程执行缓慢,但在数据库中执行却很快的问题

    参考: http://www.debugease.com/mssqlbasic/976568.html https://www.cnblogs.com/Irving/p/3951220.html ht ...

  8. Centos 7.6搭建LAMP,部署zabbix监控环境

    一.安装环境 LAMP 1.安装apache yum install -y httpd httpd服务开机进行自启:systemctl enable httpd 启动httpd服务:systemctl ...

  9. MyBatis:自定义Mapper

    在开发中有时可能需要我们自己自定义一些mapper还有些一些自定义的xml,SQL语句.其实在我们的框架中很方便.只需要在mapper中添加自定义接口,在resources中自定义一个mapper的x ...

  10. Android Studio 学习(四) 数据库

    文件存储 写数据 String data = "Data ti save"; FileOutputStream out =null; BufferedWriter writer = ...