`

javascript 命名空间

 
阅读更多

 

在我们创建一个JavaScript库时,命名空间就显得举足轻重了,我们可以将组成这个JavaScript库的零散的JavaScript文件(*.js)封装在命名空间中,而无须定义全局的函数或类。比如在本章节多次出现的Person,我们就可以作为库的一部分封装到合适的命名空间中:
Code 5-13:
var com = {};
com.anyjava = {};
com.anyjava.Person = function(name) {
    //私有成员
    var _name = name;
    //访问器
    this.getName = function() {
        return _name;
    };
    this.setName = function(name) {
        _name = name;
    };
};
//原型
com.anyjava.Person.prototype = {
    eat:function() {
        alert(this.getName() + " is eating something.");
    },
    sleep:function() {
        alert(this.getName() + " is sleeping.");
    },
    walk:function() {
        alert(this.getName() + " is walking.");
    }
};
var dirk = new com.anyjava.Person("Dirk");
dirk.eat();
 
从Code 5-13中,我们得到了一个比较符合Java开发人员习惯的命名空间,而且在实例化Person对象时,也要指定我们的命令空间路径。
 
这里说一个小技巧,如果你正在使用一个别人开发好的,且带有比较完整的命名空间规划的JavaScript库时,可能你会对每次都写冗长的命名空间赶到厌倦。比如说您正在使用我开发的JavaScript库,在com.anyjava.control.ui命名空间下,有很多您要用到的扩展UI控件,我估计您也不希望要书写很多次的var xxx = new com.anyjava.control.ui.XXX()。通过指定命名空间别名的方式,我们可以书写更少的重复代码,如Code 5-14所示的另一种实例化Code 5-13中Person的方法:
Code 5-14:
var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();
 
最后我将要说明的是,使用命名空间时,需要注意的一个问题。在书写JavaScript库时,大多数情况下命名空间声明语句可能会同时出现在一个 JavaScript文件的多个位置,或者是出现多个JavaScript文件中,但是JavaScript语言特性是最后声明的变量会覆盖前边声明的同名变量,这就需要我们注意重复声明的问题,也就是说每次声明命名空间对象时,建议先判断下这个命名空间对象是否已经存在,如Code 5-15所示:
Code 5-15:
if (typeof com.anyjava == "undefined") var com.anyjava = {};
 
这样我们就能保证“com.anyjava”对象只声明一次了。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Javascript 命名空间模式

    JavaScript中的命名空间模式是一种组织和管理代码的方式,它旨在解决全局变量污染和命名冲突的问题。在JavaScript这种没有原生命名空间支持的语言中,通过创建一个全局对象并将所有功能附加到这个对象下面,可以模拟...

    关于JavaScript命名空间的一些心得

    总结来说,JavaScript命名空间的创建和管理对于项目开发来说至关重要。通过合理使用命名空间,可以有效地隔离不同的代码模块,避免全局变量带来的命名冲突,同时也使得代码更加模块化,更易于管理和维护。在实际应用...

    javascript简单实现命名空间效果.docx

    JavaScript 命名空间是一种组织代码的策略,用于避免全局变量污染和冲突,尤其是在大型项目中,多个组件或模块共存时。JavaScript 本身并不直接支持命名空间的概念,但可以通过对象和闭包来模拟实现。以下是一些实现...

    javascript 命名空间以提高代码重用性

    JavaScript 命名空间是一种组织和管理代码的方式,它的主要目的是提高代码的可维护性和重用性,防止在大型项目中因为全局变量和函数名称冲突...总的来说,掌握和运用JavaScript命名空间是提升代码质量的重要手段之一。

    ns:JavaScript 命名空间工具

    JavaScript 命名空间工具 特征 ns 提供了两个简单但有用的功能: 1. 使用自动嵌套初始化轻松命名空间: // Assigns the function to window.MyApp.Security.authenticate. // NOTE: window.MyApp may not be ...

    namespace.js:一个简单的 JavaScript 命名空间函数

    命名空间.js 一个简单的 JavaScript 命名空间函数。背景为了将代码组织成逻辑组,Java 和 C# 等编程语言具有namespace的概念。 JavaScript 没有命名空间的概念——但可以创建类似的功能。 Namespace.js 就是这样做的...

    利用MS AJAX注册Javascript命名空间并创建类

    总结一下,利用MS AJAX注册JavaScript命名空间并创建类,我们可以更好地组织和管理代码,避免命名冲突,并利用ASP.NET AJAX库提供的高级功能。通过上述步骤,我们创建了一个名为`Demo.Person`的类,它包含一些属性和...

    javascript创建命名空间的5种写法__1.docx

    以下是五种创建JavaScript命名空间的方法: 1. **通过函数(function)创建** 这种方法通常涉及定义一个函数,然后在函数内部声明变量和方法。例如: ```javascript var namespace = namespace || {}; namespace....

    JavaScript 命名空间 使用介绍

    然而,JavaScript不同于其他编程语言,如Java或C#,它没有内置的命名空间概念,这使得在处理大型项目时可能会遇到命名冲突的问题。在Java或C#中,命名空间用于将代码组织到逻辑分组中,允许相同的名称在不同的命名...

    浅析JavaScript中命名空间namespace模式

    namespace即“命名空间”,也称“名称空间” 、”名字空间”。接下来通过本文给大家介绍JavaScript中命名空间namespace模式的相关知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧

    JS命名空间的一种改进版本

    传统的JavaScript命名空间通常是通过创建一个全局对象,然后将所有相关的函数和变量作为该对象的属性来实现的。例如: ```javascript var MyNamespace = { func1: function() {}, func2: function() {}, var1: '...

    namespaced:一个简单的 JavaScript 命名空间库

    命名空间 一个简单的 JavaScript 命名空间库。 Namespaced.declare('myApp.namespace'); myApp.namespace = 'it worked!'; // does not complain about namespace being undefined

    JavaScript 编程引入命名空间的方法

    JavaScript 命名空间实现方法 JavaScript 编程引入命名空间的方法是为了避免函数名相同的问题。在 JavaScript 中,没有命名空间的概念,需要使用对象来模拟命名空间。下面是一个基本的命名空间实现方法: 1. 定义...

    javascript简单实现命名空间效果

    以上就是实现JavaScript命名空间的一些基本方法和技巧。通过命名空间,可以更好地管理代码结构,使得项目更加清晰和易于维护。需要注意的是,命名空间的使用要保持适度,过度使用或不恰当的使用命名空间可能会导致...

    非常好的javascript原理资源,分享出来.zip

    6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery [jQuery][9] [jQuery架构设计与实现][10] [jQuery选择器库][11] [zepto][12] 1....

    javascript的基础语法,面向对象的实现和设计模式实现

    6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery [jQuery][9] [jQuery架构设计与实现][10] [jQuery选择器库][11] [zepto][12] 1....

Global site tag (gtag.js) - Google Analytics