javascript是如何实现命名空间效果
来源:才华咖 本文已影响1.71W人
来源:才华咖 本文已影响1.71W人
Javascript原生并不支持命名空间,需要变通来实现。
在我们创建一个JavaScript库时,命名空间就显得举足轻重了,我们可以将组成这个JavaScript库的零散的JavaScript文件(*)封装在命名空间中,而无须定义全局的函数或类。比如在本章节多次出现的Person,我们就可以作为库的一部分封装到合适的命名空间中:
Code 5-13:
复制代码 代码如下:
var com = {};
ava = {};
on = function(name) {
//私有成员
var _name = name;
//访问器
ame = function() {
return _name;
};
ame = function(name) {
_name = name;
};
};
//原型
otype = {
eat:function() {
alert(ame() + " is eating something.");
},
sleep:function() {
alert(ame() + " is sleeping.");
},
walk:function() {
alert(ame() + " is walking.");
}
};
var dirk = new on("Dirk");
();
从Code 5-13中,我们得到了一个比较符合Java开发人员习惯的命名空间,而且在实例化Person对象时,也要指定我们的命令空间路径。
这里说一个小技巧,如果你正在使用一个别人开发好的,且带有比较完整的命名空间规划的JavaScript库时,可能你会对每次都写冗长的命名空间赶到厌倦。比如说您正在使用我开发的JavaScript库,在命名空间下,有很多您要用到的扩展UI控件,我估计您也不希望要书写很多次的var xxx = new ()。通过指定命名空间别名的方式,我们可以书写更少的`重复代码,如Code 5-14所示的另一种实例化Code 5-13中Person的方法:
Code 5-14:
复制代码 代码如下:
var ns = ava;
var dirk = new on("Dirk");
();
最后我将要说明的是,使用命名空间时,需要注意的一个问题。在书写JavaScript库时,大多数情况下命名空间声明语句可能会同时出现在一个JavaScript文件的多个位置,或者是出现多个JavaScript文件中,但是JavaScript语言特性是最后声明的变量会覆盖前边声明的同名变量,这就需要我们注意重复声明的问题,也就是说每次声明命名空间对象时,建议先判断下这个命名空间对象是否已经存在,如Code 5-15所示:
Code 5-15:
复制代码 代码如下:
if (typeof ava == "undefined") var ava = {};
这样我们就能保证“ava”对象只声明一次了。
Javascript中如何判断对象是否为空
有关javascript实现的多个层切换效果通用函数示例
php和javascript之间变量的传递实现代码
JavaScript如何实现JSON.stringify
JavaScript简单实现放大镜效果代码
java与javascript之间json格式数据互转详解
如何使用JavaScript实现页面定时跳转
用 Javascript 实现锚点(Anchor)间平滑跳转
如何使用JavaScript实现倒计时
使用JavaScript实现Java的List功能
用javascript实现图片模糊到清晰载效果指南
如何基于JavaScript实现本地图片预览
javaScript实现可缩放显示区效果代码
Javascript实例教程如何使用HoTMetal
如何在Javascript中为String对象添加trim,ltrim,rtrim方法
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
浅谈如何深入学习Javascript中的this关键字
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
JavaScript中创建字典对象(dictionary)的实例
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
Javascript到PHP加密通讯的简单实现
优秀学生是如何高效利用时间的
如何理解Javascript的caller,callee,call,apply区别
如何理解Javascript的caller,callee,call,apply区别
javascript实现贪吃蛇代码
如何实现演讲的预期效果
如何实现种善因的效果美文
如何理解Javascript的caller,callee,call,apply区别
企业培训效果最大化如何实现【新版多篇】
如何调试javascript脚本呢
JavaScript重置表单的实现