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

javascript js 入门三

继续上篇 语法遍:本篇介绍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中的对象,可以使用方式二,比较直观。