日期:2014-05-16  浏览次数:20462 次

现实中没有对象,今天在JavaScript中弄几个

? ? ? ? 最近在学习网页上面的一些知识,从HTML到CSS,慢慢的就接触到了JavaScript,今天就来谈谈Javascript中的面向对象的一点知识,当是对自己这几天学到的东西的一点巩固,也谈谈一下自己的一点点淡淡的理解。

? ? ?接触过面向对象语言的人都知道,Java语言无疑是面向对象思想最好的诠释者,今天要说的Javascript,前面也带一个Java,大家可能就会把Javascript和Java联系到一起,开始的时候我也以为他们是有着很亲密的关系,我还特意百度了一下Java和Javascript的关系,才知道他们两个的区别。以下来自百度。

? ? “很多人看到 Java 和 JavaScript 都有“Java”四个字,就以为它们是同一样东西,其实它们是完完全全不同的两种东西。Java在客户端的运行的应用程序叫做 Java Applet,是嵌在网页中,而又有自己独立的运行窗口的小程序。Java Applet 是预先编译好的,一个 Applet 文件(.class)用 Notepad 打开阅读,根本不能理解。Java Applet 的功能很强大,可以访问 http、ftp等协议,甚至可以在电脑上种病毒(已有先例了)。相比之下,JavaScript 的能力就比较小了。JavaScript 是一种“脚本”(“Script”),它直接把代码写到 HTML 文档中,浏览器读取它们的时候才进行编译、执行,所以能查看 HTML 源文件就能查看JavaScript 源代码。JavaScript 没有独立的运行窗口,浏览器当前窗口就是它的运行窗口。

  Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。

  Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java 应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

  Java分为三个体系JavaSE,JavaEE,JavaME”

? ? 通过上面的解释大家可能知道了Java和Javascript的区别,他们可以说是风马牛不相及,但是他们也有相似的地方,都有“面向对象”的思想在里面,下面就来说说Javascript中的面向对象,随便弄几个对象出来。

? ?

? ?No.1:工厂模式的方法

? ??

/*工厂模式*/
function creatObject(name,age) {
	var obj = new Object();          //创建对象
	obj.name = name;				 //添加属性
	obj.age = age;					 
	obj.run = function() {            //添加方法
		return this.name + this.age;
		};
	return obj;			//返回对象
	};
var box1 = creatObject('TMS',100);     //生成对象
var box2 = creatObject('TNT',200);       

??

?

? No.2:使用构造函数

??

/*构造函数不用返回对象引用,不需要return语句,首字母必须大写,普通的方法名首字母小写如:function box();*/
function Box(name,age) {
	this.name = name;
	this.age = age;
	this.run = function() {
		return this.name + this.age;	
		};
	};

//实例化
var box1 = new Box('TMS',100);
var box2 = new Box('TNT',103);

?

?

? No.3:使用原型创建(JavaScript 是基于原型的语言)使用prototype关键字添加属性和方法

? 这样的构造有个缺陷就是实例化的对象中的属性是一样的,而且实例化的对象的地址也是一样的,有点坑。

??

//原型方式构造,属性和方法的地址是一样的,构造方法中是不一样的
function Box(){};                 //构造函数中什么都没有
Box.prototype.name = 'TMS';       //原型属性
Box.prototype.age = '100';        //原型属性
Box.prototype.run = function() {  //原型方法
	return this.name+this.age;
	};

var box1 = new Box();
var box2 = new Box();
alert(box1.run()==box2.run());   //true;

?

?

? No.4:使用字面量的方式创建原型对象,这和第三种方法相似,个人感觉就是把所有的属 ? 性和方法写到一起了,没什么大的变化。

??