JavaScript是世界上是被误解得最厉害的编程语言。有些人认为它不具备“信息隐藏”的能力,因为JavaScript的对象没有私有变量和方法。这是误解。JavaScript对象可以拥有私有成员,下面我们来看看怎么做。(SharkUI.com注:JavaScript并不是真正拥有私有、公有等等OOP的特性,这篇译文中提到的这些私有、公有、特权等特性,是利用JavaScript的其他特性(参看本文的“闭包”一节)“模拟”出来的。感兴趣的话可以搜索相关的文章来看,当然也可以不管这些,就当它是真正的OOP来用。Have fun!)
对象
JavaScript是建立在对象之上的。数组(Array)是对象,函数(Function)是对象,对象(Objects)当然也是对象。那什么是对象呢?对象是一组“名称:值”对(name-value pair)的集合。名称是字符串,值却可以是字符串、数值、布尔或对象(包括数组和函数)。对象通常是用哈希表来实现的,以便可以快速地取值。
如果值是一个函数,我们就可以把它当作一个“方法”。当对象的一个方法被执行,变量this就被设为对象本身。如此,方法就可以通过this变量来访问对象的实例。
对象可以通过“构造器(constructor)”来创建。构造器是一个拥有初始化对象的函数。构造器提供了类似其他语言中的“类(class)”所提供的特性和功能,包括静态变量和方法。
公有
对象的所有成员都是公有成员。任何函数都可以访问、修改或者删除这些成员,当然也可以添加新的成员。给对象添加成员的两种主要方法:
通过构造器
这种方法一般用来初始化对象实例的公有变量。构造器的this变量被用来给对象添加成员:
function Container(param) {
this.member = param;
}构造一个新的对象:
var myContainer = new Container('abc');然后,公有变量 myContainer.member 就拥有了值 'abc'。
通过原型(prototype)
这种方法通常用来添加公有方法。在对象本身搜寻一个成员但没有找到时,就使用构造器的原型(prototype)成员。这种原型机制实现了面向对象所谓的 “继承(inheritance)”,同时也节省了内存。给创建自同一个构造器的所有的对象加上一个方法,只需要给构造器的prototype增加一个函数:
Container.prototype.stamp = function (string) {
return this.member + string;
}然后我们就可以调用这个方法:
myContainer.stamp('def')返回'abcdef'。
JavaScript中的私有成员
原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]
相关文章:
- JavaScript实用技巧集锦(2007-10-27 1:12:14)
- javascript加密与解密(2007-10-18 10:4:26)
- JScript错误代码及相应解释大全(2007-10-10 4:26:47)
- Javascript:循环语句(2007-7-26 8:13:50)
- 某些经常用到的javaScript(2007-6-12 1:50:15)
- javascript参考 表单元素的属性和方法 二(2007-2-7 4:21:47)
- 关于JavaScript 数组(2007-1-26 9:57:58)
- Script Encoder :asp代码加密(2007-1-21 3:31:40)
- 在HTML网页中巧用URL(2006-11-17 4:23:53)
- javascript:对象化编程(2006-11-5 7:39:28)
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
