如何实现javascript js 类命名空间的写法
转载 猫猫小屋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 类命名空间的写法的更多相关文章
- JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档
作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...
- JS类的封装及实现代码
js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...
- JavaScript学习总结(十四)——JavaScript编写类的扩展方法
在JavaScript中可以使用类的prototype属性来扩展类的属性和方法,在实际开发当中,当JavaScript内置的那些类所提供的动态 ...
- js类的笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自己手写的自动完成js类
在web开发中,为了提高用户体验,会经常用到输入框的自动完成功能,不仅帮助用户进行快速输入,最重要的是帮助那些“记不全要输入什么”的用户进行选择.这个功能有很多插件已经实现了,为了适应项目的特殊需求, ...
- Atitit.javascript 实现类的方式原理大总结
Atitit.javascript 实现类的方式原理大总结 1. 实现类的式::构造方法方式:原型方式:构造方法+原型的混合方式 1 2. 原型方式(function mode)经典式..实现属性推荐 ...
- (转载)Javascript定义类(class)的三种方法
因在公司内部培训中有讲解到JS类的概念,不甚明白,于是进行了google找到了相关的介绍说明,现将其摘抄下来,以作记录. 在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对 ...
- 关于JavaScript的namespace命名空间
写C或者JAVA习惯的人写JavaScript时可能会发现JavaScript并没有命名空间这一概念,当然如果没有接触过命名空间的程序猿(比如写js,PHP,Python)也可能对命名空间不关注或者不 ...
- javascript 定义类(转载)
Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门 ...
随机推荐
- Linux 权限位详解
1. Linux 权限位 对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的. 在Linux中,有5种权限,分别是,r.w.x.s.t. 可读权限:r 可写权限:w 可执行权限:x Setui ...
- Vc数据库编程基础MySql数据库的常见库命令.跟表操作命令
Vc数据库编程基础MySql数据库的常见操作 一丶数据库常见的库操作 1.1查看全部数据库 命令: show databases 1.2 创建数据库 命令: Create database 数据库名 ...
- 使用Asp.Net Core MVC 开发项目实践[第四篇:基于EF Core的扩展2]
上篇我们说到了基于EFCore的基础扩展,这篇我们讲解下基于实体结合拉姆达表达式的自定义更新以及删除数据. 先说下原理:其实通过实体以及拉姆达表达式生成SQL语句去执行 第一种更新扩展: 自定义更新字 ...
- SpringBoot之打成war包部署到Tomcat
正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服 ...
- Java线程实现与安全
目录 1. 线程的实现 线程的三种实现方式 Java线程的实现与调度 2. 线程安全 Java的五种共享数据 保证线程安全的三种方式 前言 本篇博文主要是是在Java内存模型的基础上介绍Java线程更 ...
- gcc:call to '__open_missing_mode' declared with attribute error
因为使用 open 函数的时候,如果在第二个参数中使用了 O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限.这个取决于 gcc 的版本,有的版本不会报这个错误. 解决办法: 找到源码中报 ...
- asp .net core Get raw request.
小弟初来乍到,分享一些工作学习中遇到的问题和解决方式,如有不准确或是有错误的地方,希望不吝赐教,谢过了. --Dogtwo 背景: 一个代理服务器BK,接收前端A发送的请求,记录log,并转发给 ...
- Laravel日志
大家在使用 Log::info() 会让日志全部记录默认在 storage/logs/laravel.log 文件里,文件大了查找起来就比较麻烦.那么我可不可以单独记录在一个日志文件里呢? 只需在你的 ...
- MyBatis:自定义Mapper
在开发中有时可能需要我们自己自定义一些mapper还有些一些自定义的xml,SQL语句.其实在我们的框架中很方便.只需要在mapper中添加自定义接口,在resources中自定义一个mapper的x ...
- 【转】AtomicReference与volatile的区别
来源:AtomicReference与volatile的区别 AtomicReference与volatile的在可见性上的意义是一致的. volatile不能保证原子性,AutomicReferen ...