日期:2014-05-16 浏览次数:20323 次
继续上篇 语法遍:本篇介绍JS自定义对象。
在js中,可以用函数来模拟对象的描述,可以有以几种定义类描述对象的形式:
方式一: 只定义空的函数,用此函数描述new出一个具体对象后,在对象引用上加属性与方法 如下:
//用js来描述人 function Person(){//相当于构造器。 //alert("person run"); } //通过描述进行对象的建立。 new. var p = new Person(); //动态给p对象添加属性。直接使用p.属性名即可。 p.name = "zhangsan"; //赋值后,然后要读取属性值,可直接通过p.属性名即可。 p.age = 29; //如果定义的p对象的属性赋值为一个函数,即是给p对象添加一个方法。 p.show = function(){ alert("show :"+this.name+":"+this.age); } p.show(); //调用自定义对象的方法
方式二:通过构造器的方式来描述类,将对象的属性与方法定义在函数体中。 如下:
function Person(name,age){ //在给Person对象添加了两个属性。 this.name = name; this.age = age; //给Person对象添加两个方法,也间接说明js中函数可以嵌套函数的。 this.setName = function(name){ this.name = name; } this.getName = function(){ return this.name; } }
使用上面的Person对象就简单了,与java类似 如下:
var p = new Person("张三",20); for(x in p){ println(x+":元素值是:"+p[x]); //这里的for in中,x为p对象中,所以成员。如x为name/age/getName... } p.setName("小强"); println("看看姓名哈::"+p["name"]) //对象["属性名"] 也可查看属性的值 println("通过方法看姓名哈::"+p.getName()); println("直接使用属性看姓名哈:"+p.name);
方式三:通过将对象的属性名与方法以 键值对 形式封闭在一个大括号{}中,这种方式构造出来的对象,不能new出新的对象,相当于var 对象变量名, 此对象变量名不可以再new。 如下:
//直接使用{}定义属性和值的键值对方式。键值键通过:连接,键与键之间用逗号隔开。 var pp = { //定义一些成员。 "name":"小明","age":28, "getName":function(){ return this.name; } } println("能看看值好吗::"+pp["age"]+":"+pp.name +":"+pp.getName());
这种方式,更广泛的应用在数据,以键值存储当作一个存储容器对象来用,又如下:
var citys = { "江苏":["南京","苏州","无锡","常州"], "上海":["徐汇区","浦东区","宝山区"] } println("城市还可以这么玩:"+citys.江苏[1]); //开心的话,可以拿到江苏后,给江苏来个遍历 for(var i=0;i<citys.江苏.length;i++){ println("江苏的::"+citys.江苏[i]); }
总结:一般来说呢,
1. 若是为了存储数据的,数据以键值对形式的话,用方式三就洽当不过了。
2.若要存储数据,但数据不需要键值对的话,用普通数组就O了。
3. 若要玩转类型java中的对象,可以使用方式二,比较直观。