Javascript:面向对象之静态、公有、私有、特权对象

分类:Pure Javascript, 学习笔记 发表时间:2009年09月10日 字体大小:12号14号

虽然我对jQuery库的应用比较熟悉,但对他的内部实现机制还是有许多懵懂之处。于是乎,近日开始学习Javascript面向对象编程。在此学习过程中,会整理一些笔记发布在我的博客上,也提供给和我一样不理解Javascript面向对象编程的朋友一些小小的帮助。

今天就对面向对象编程的几个对象类型做一个实例总结。

1. 静态对象

首先创建一个隐式的Function对象并赋给了myConstructor变量,在创建完对象后,通过添加静态的属性和方法来补充该myConstructor实例化后的对象,代码如下:

1
2
3
4
5
6
7
8
9
10
var myConstructor = function() {
	//some code
}
// -----此处的name属性和alertName方法都属于静态对象
myConstructor.name = "hiro";
myConstructor.alertName = function() {
	alert(this.name);
}
// -----此处的()起到了执行代码的作用
myConstructor.alertName();

2. 公有对象

创建一个显式的Function对象,然后实例化对象,通过向实例化后的对象中的原型prototype添加属性和方法来产生公有的属性和方法,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
function myConstructor() {
	//some code
}
var obj = new myConstructor();
alert(obj.name);
// -----此处通过javascript的原型prototype来添加公有对象
myConstructor.prototype.name = "hiro";
myConstructor.prototype.alertName = function() {
	alert(this.name);
}
// -----此处的()起到了执行代码的作用
obj.alertName();

3. 私有对象、特权对象

创建一个显式的Function对象,在该对象内部定义的变量或方法为私有对象,而在该兑现内部通过this.来引用的属性和方法为特权方法,之所以称为“特权”,是因为特权对象可以访问私有对象,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function  myConstructor(message) {
	// -----此处的name和alertName为私有对象,只能在函数对象内部访问
	var name = "hiro";
	function alertName(name) {
		alert(name);
	}
 
	// -----此处的myMessage和alertMessage为特权方法,它既可以被函数对象外部访问,也可以访问函数内部对象的私有对象
	this.myMessage = message;
	this.alertMessage = function() {
                // -----此处访问了函数对象内部的name和alertName私有对象
		alertName("ihiro.org");
		alert(this.myMessage + ", " + name);
	}
 
	alertName(name);
}
var obj = new myConstructor("A object is created");
alert(obj.myMessage);
obj.alertMessage();

以上语言性描述纯属个人理解,有理解不到位的地方给我提示出来,谢谢!

不错不错,已经有 个评论!
  1. 技术帖子支持

    • 你的速度特忒快了点吧,刚发布就来留言了!

  2. 飘到这里来了,一直挺欣赏技术博客的,虽然自己不是技术型的,呵呵…

  3. 学习一下h

  4. 技术贴,慢慢看~

  5. 你的文章订阅好像有问题,怎么不托管你的feed呢?

    • 有什么问题呢?我有Google Reader订阅正常的啊!!

  6. JS是非常的强大

  7. hiro博客的代码显示插件是什么的,貌似很好用哦。
    面向对象思想现在好hot~我的c++还有现在的java都是~

    • 我用的是wp_codebox插件,很好用的!!

我要评论

  • * *