javascript 设计模式 - 成员访问

来源:互联网 发布:淘宝店装修教程视频 编辑:程序博客网 时间:2024/05/16 00:39
封装:通过将一个方法或者属性声明为私用的,可以让对象的实现细节对其他对象保密以降低对象之间的耦合程度,可以保持数据的完整性并对其修改方式加以约束,这样可以是代码更可靠,更易于调试。封装是面向对象的设计的基石。

  尽管JavaScript是一门面向对象的语言,可它并不具备将成员声明为公用或私用的任何内部机制,所以我们只能自己想办法实现这种特性。下面还是通过一套完整的代码去分析,介绍什么是私有属性和方法,什么是特权属性和方法,什么是公有属性和方法,什么是静态属性和方法。

  私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量。

  特权属性和方法:创建属性和方法时使用的this关键字,因为这些方法定义在构造器的作用域中,所以它们可以访问到私有属性和方法;只有那些需要直接访问私有成员的方法才应该被设计为特权方法。

  共有属性和方法:直接链在prototype上的属性和方法,不可以访问构造器内的私有成员,可以访问特权成员,子类会继承所有的共有方法。

  共有静态属性和方法:最好的理解方式就是把它想象成一个命名空间,实际上相当于把构造器作为命名空间来使用。

所有的全局变量都是window的属性

1   /* -- 封装 --*/
2   var _packaging=function(){
3   //私有属性和方法
4   var name='Darren';
5   var method1=function(){
6    //...
7   }
8   //特权属性和方法
9   this.title='JavaScript Design Patterns' ;
10   this.getName=function(){
11    return name;
12   }
13   }
14   //共有静态属性和方法
15   _packaging._name='Darren code';
16   _packaging.alertName=function(){
17   alert(_packaging._name);
18   }
19   //共有属性和方法
20   _packaging.prototype= {
21   init:function(){
22   //...
23   }
24   }

http://www.cnblogs.com/Darren_code/archive/2011/08/31/JavascripDesignPatterns.html