JavaScript类属性

在JavaScript中,类属性有2种:

1、一种是直接在定义类后赋值

var ClassA = function(){

}

ClassA.dept = "R&D";

2、另一种是使用prototype赋值:

var ClassA = function(){

}

ClassA.prototype.url = "http://localhost:9080/myweb";

3、两者的区别

prototype属性初始化后,能通过对象访问,而第一种情形则不行。只能通过ClassA.dept来访问:

alert(ClassA.dept);

原型的属性也可以通过类似的方法访问:

alert(ClassA.prototype.dept);    //(3)

使用prototype设置的属性值可以保留,不被改变,但有同名的属性设置后,则取值取的为新设置属性的值,要想获取原始值,可以使用(3)式的方法。

4、测试例子

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>prototype test</title>
</head>

<body>

<script lang="javascript">
	
	var ClassA = function(){
 		this.name = "Zhangsan";
 		var age = 40;
	}
 
	
	ClassA.prototype.url = "http://localhost:9080/myweb";
	
	var obj0 = new ClassA();
	
	alert('obj0:' + obj0.url);
	
	var obj = new ClassA();
	obj.url = "http://www.baidu.com";
	
	//ClassA.prototype.url = "http://www.sohu.com";
	obj.name = "Lisi";
	
	alert('obj.url:' + obj.url + ',prototype.url:' + ClassA.prototype.url );
	
	ClassA.name = "Wangwu";
	ClassA.dept = "R&D";
	var obj2 = new ClassA();
	alert(obj2.name + ',' + ClassA.name + ',' + obj2.dept + ',' + ClassA.dept);

 
</script>
</body>

</html>

5、用途

第一种设置的类的属性可以用来保存不被改变的值,因为无论其实例化对象无论怎么变,其类的属性不会变,除非显式地设置类的属性。

第二种属性用途广泛,除可实现第一种的优点外,还可以做为对象的缺省属性,即对象没有设置同名属性的前提下,可以访问类的属性作为对象的缺省属性。





posted @ 2017-07-25 20:20  hongweigg  阅读(22)  评论(0编辑  收藏  举报