易截截图软件、单文件、免安装、纯绿色、仅160KB

JavaScript面向对象程序设计(6): 封装

 本博客转载于:http://devbean.javaeye.com/blog/407517
封装是面向对象的重要概念之一。如果一个程序没有封装性,也就谈不上什么面向对象。但是,JavaScript并不像其他的语言,比如Java,有公有变量和私有变量等;在JavaScript中只有一种作用域:公有作用域。在本章中,我们将会见识到JavaScript是如何实现封装的特性的。
1. this和公有变量
首先需要理解this关键字。看下面的一段代码,你应该对此感到熟悉:
Js代码
function Person(name, age) {
this.name = name; // 定义一个公有变量
this.age = age;
this.show = function() { // 定义一个公有函数
alert("name: " + name + "; age: " + age);
}
}
var bill = new Person("Bill", 20);
alert(bill.name);
bill.show();
这里的this关键字是必不可少的。前面只是让大家记住,那么为什么要这样呢?想想JavaScript的对象,JavaScript的对象类似于散列,一个<string, object>键-值对的集合。这里的对象的属性实际上都是离散的,并不像其他的语言那样绑定到一个对象上面。this关键字指代的是属性或者函数的调用者,也就是说,谁调用这个属性或者函数指的就是谁。可以看到,这里的this和Java或者C++的this是有所不同的,后者的this是指属性或者函数所在的那个对象本身。而这里this的作用就是将它后面跟着的属性或者对象绑定到调用者上面。回忆一下JavaScript的new的过程,首先将创建一个空的对象,然后使用构造函数初始化这个对象,最后返回这个对象。在这个过程中,JavaScript将把this用这个对象替换,也就是把对象和这些属性或函数相关联,看上去就像是这个调用者拥有这个属性或者函数似的,其实这是this的作用。
这样看来,show里面的name和age并没有关键字,但也是可以正常的执行就会明白怎么回事了——因为前面已经用this把name和age与这个对象bill相关联,并且,show也关联到这个bill变量,因此JavaScript是可以找到这两个变量的。
这样来看,似乎由this修饰的都是公有变量。事实确实如此,如果你要使一个变量成为公有变量,可以使用this。像上面代码中的name和age都是公有变量,在外面使用aPerson.name或者aPerson.age就可以访问到。
2. 私有变量
怎么声明一个私有变量呢?事实上就像前面说的,JavaScript根本没有私有作用域这一说。那么来看下面的代码:
Js代码
function Person(name, age) {
var name = nam


相关文档:

简单的javascript拖拽实例

简单的javascript拖拽实例----> 本人原创(244796562@qq.com)
<html>
<head>
<title>拖拽测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div id="box" style="position:absolute;top:100px;left:200px;width ......

javascript 中的window.open()函数用法

javascript 中的window.open()函数用法
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,
或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息
、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面
效果非常的容易,只要往该页面的HTML里加入几段J ......

JavaScript 之继承

 Javascript 本身并不直接支持继承,不过javascript强大之处就在于其无比的灵活性,你基本可以为所欲为。
1. 通过在子类中调用父类的构建函数来实现继承。
2. 用Prototype来实现继承。
3. 常见framework是如何实现继承的。
4. 总结 ......

JavaScript:一个简单的日期格式验证

10:33:41 2009-11-14 
function checkDate() {
//取得date的值
if(!document.getElementById || !document.createTextNode()){return;}
var dateFiled = document.getElementById('date');
if(!dateFiled) {return;}
var dateValue = dateFiled.value;
var checkPattern = new RegExp("\\d{2}/\\d{2}/\\d ......

JavaScript面向对象程序设计(1): 前言

 前一阵看EXTJS的几个例子,觉得JS的底子很差,特别是JavaScript面向对象程序设计方面的知识,于是在网上搜索,找到几篇好的博客,于是转过来,以备后面的学习使用。
本博客转于:http://devbean.javaeye.com/blog/404032
1. 基于对象还是面向对象?
面向对象技术是现代软件开发中的重要技术之一。面向对象变成的好 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号