首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载  ┆ 端午节祝福 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>编程相关>JAVASCRIPT>实例讲解JavaScript的私有变量的创建和使用
实例讲解JavaScript的私有变量的创建和使用
来源: 发布时间:2008-07-09 发布人: 浏览: 人次   字体: [ ]  
本文主讲JavaScript对象对私有变量的使用,从多角度,实例进行说明:

对象

JavaScript根本上都是关于的对象(Object)的。数组(Array)是对象,函数(Function)是对象,Object就不说了。那什么是对象?对象是名称-值的配对的集合。名称是字符串,值可以是字符串、数字、布尔值和对象(包括数组和函数)。对象常常实现为哈希表以快速存取值。

如果一个值是函数,我们可以将它视为方法method。当调用一个对象的方法时,this 变量就会被设为该对象。这个方法就可以通过this变量访问实例变量。

对象是由构造器constructor产生的,它是初始化对象的函数。构造器提供了其它语言中类提供的特性,包括静态方法和变量。

公共成员

对象的成员都是 public 公共成员。任何函数都可以访问、修改或者删除这些成员。有两种主要的途径给新的对象加入成员:

构造器中

这个技术一般用来初始化公共实例变量。构造器的this变量是用来向对象添加成员的。

function Container(param) {this.member = param;}

这样,如果我们构造一个新的对象

var myContainer = new Container('abc');

那么myContainer.member 就会包含‘abc’

原型中

这个技巧一般用来添加公共方法。当一个成员被检索且没有在对象中发现的时候,那么它就会从对象构造器的 prototype 成员中去获取它。这个原型机制可用来实现继承。它也保存内存。要为一个构造器生成的所有对象加入一个方法,将函数加入构造器的prototype 中:

Container.prototype.stamp = function (string) {
return this.member + string;
}

这样,我们可以调用这个方法

myContainer.stamp('def')

它会返回‘abcdef’.

私有成员

私有Private成员要由构造器生成。构造器中的普通的var变量和参数都成为私有成员。

function Container(param) {
this.member = param;
var secret = 3;
var self = this;}

这个构造器有三个私有实例变量:param, secret, 和 self。它们被附加到了对象上,但它们无法从外部访问,同时它们也无法被这个对象的公共方法所访问。他们只对私有成员可见。私有方法则是构造器内部的函数。

function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var self = this;
}

私有方法 dec 检查 secret 实例变量。如果它大于0,就减少secret 的大小并返回 true 。否则它返回 false 。这个可以限制对象使用三次。

按照惯例,我们给出一个私有的 self 参数。这个可以令对象对私有方法可见。这种做法是因为ECMAScript Language Specification中的一个错误,这个错误令 this 不能正确地对内部函数设置。

私有方法无法被公共方法调用。要令私有方法有用,我们需要引入一种特权方法。

特权成员

一个特权A privileged 方法可以访问私有的变量和方法,同时它对公共域可见。也可以删除或替换一个特权方法,但不能改变它。

特权方法是用 this 在构造器中分配的。

function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var self = this;
this.service = function () {
if (dec()) {
return self.member;
} else {
return null;
}
};
}

service 就是一个特权方法。前三次调用会返回‘abc’
之后 ,它会返回 nullservice调用的私有的 dec 方法,而
dec又访问了私有的 secret变量。service对其它的对象和方法是可见的,但不能直接访问私有成员。


共2页: 上一页 1 [2] 下一页
↓下一篇:没有了
相 关 文 章   发布商链接
·怎么使用js脚本理的timer控件
·用javascript实现select的美化
·用Javascript轻松制作抽奖系统
·如果用JS得到字符串中出现次数最多的...
·javascript应用之实现select的美化
·javascript实现ListBox内容的交互实...
·javascript使用xml数据岛的简单实例
·Javascript中判断润年简单的代码实...
·javascript实现多表头分类交叉报表代...
·javacript常用的验证方法小结
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·javascript实现页面自动刷新...
·javascript解决iframe框架页...
·javascript实现网易邮箱多附...
·javascript实现模仿IE自动完...
·javacript实现关闭子窗口,刷...
·javascript脚本实现右键弹出...
·javascript结合Ajax制作的可...
·javascript实现页面载入等待...
·javascript实现一个IP只弹窗...
·javascript导航条比较实用的...
·怎样把select选择下拉框中的...
·实用代码,让网站具有简繁体在
·JavaScript脚本调试常用方法...
·javascript版生成Excel报表
·Javascript时间差计算函数代...
热 门 文 章
·Ext2.0框架的Grid使用介绍祥...
·javascript使用xml数据岛的简...
·JS实现多行的HTML静态表格分...
·javascript实现多张图片轮流...
·Adobe Reader利用javascript...
·javascript读写TEXT文本文件...
·幻灯片焦点图片新闻显示调用f...
·javascript解析身份证号码得...
·javascript实现动态多附件上...
·Javascript在IE和FireFox中的...
·javascript实现页面载入等待...
·javascript实现类似IE7中的Ta...
·js操作innerHTML 引起的未知...
·实现静态页面点击数的自动更...
·javascript实现的网页软键盘...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .