当前位置: 首页 > 图文教程 > 网络编程 > Javascript > Javascript 作用域使用说明

Javascript
动态生成js类的实现方法
漂亮的提示信息(带箭头)
实时编辑网页网页文字实时编辑,如同TEXTBOX一般
基于逻辑运算的简单权限系统(实现) JS 版
用 javascript 实现的点击复制代码
AutoSave/自动存储功能实现
JQuery 简便实现页面元素数据验证功能
5 cool javascript apps
jQuery使用手册之 事件处理
dojo 之基础篇
dojo 之基础篇(二)之从服务器读取数据
dojo 之基础篇(三)之向服务器发送数据
Ajax一统天下之Dojo整合篇
javascript对象的property和prototype是这样一种关系
this[] 指的是什么内容 讨论
用prototype实现的简单小巧的多级联动菜单
xml 与javascript结合的问题解决方法
tbody元素支持嵌套的注意方法
推荐dojo学习笔记
JavaScript判断两种格式的输入日期的正确性的代码

Javascript 作用域使用说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 387 ::
收藏到网摘: n/a

在传统的面向对象程序设计中,主要关注于公用和私有作用域。公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。

公用、受保护和私有作用域

在传统的面向对象程序设计中,主要关注于公用和私有作用域。公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。而私有作用域中的属性只能在对象内部访问,即对于外部世界来说,这些属性并不存在。这也意味着如果类定义了私有属性和方法,则它的子类也不能访问这些属性和方法。

最近,另一种作用域流行起来,即受保护作用域。虽然在不同语言中,受保护作用域的应用的规则不同,但一般说来,它都用于定义私有的属性和方法,只是这些属性和方法还能被其子类访问。

对ECMAScript讨论这些作用域几乎毫无意义,因为ECMAScript中只存在一种作用域——公用作用域。ECMAScript中的所有对象的所有属性和方法都是公用的。因此,定义自己的类和对象时,必须格外小心。记住,所有属性和方法默认都是公用的。

许多开发者都在网上提出了有效的属性作用域模式,解决了ECMAScript的这种问题。由于缺少私有作用域,开发者们制定了一个规约,说明哪些属性和方法应该被看作私有的。这种规约规定在属性名前后加下划线。例如:

这段代码中,属性color是私有的。记住,这些下划线并不改变这些属性是公用属性的事实,它只是告诉其他开发者,应该把该属性看作私有的。

有些开发者还喜欢用单下划线说明私有成员,例如obj._color。

静态作用域并非静态的

静态作用域定义的属性和方法任何时候都能从同一个位置访问。在Java中,类可具有静态属性和方法,无需实例化该类的对象,即可访问这些属性和方法,例如java.net.URLEncoder类,它的函数encode()即是静态方法。

严格说来,ECMAScript并没有静态作用域。不过,它可以给构造函数提供属性和方法。还记得吗,构造函数只是函数。函数是对象,对象可以有属性和方法。例如:

这里,方法alternate()实际上是函数sayHi的方法。可以像调用常规函数一样调用sayHi()输出"hi",也可以调用sayHi.alternate()输出"hola"。即使如此,alternate()也是sayHi()公用作用域中的方法,而不是静态方法。