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、用途
第一种设置的类的属性可以用来保存不被改变的值,因为无论其实例化对象无论怎么变,其类的属性不会变,除非显式地设置类的属性。
第二种属性用途广泛,除可实现第一种的优点外,还可以做为对象的缺省属性,即对象没有设置同名属性的前提下,可以访问类的属性作为对象的缺省属性。