给一个JS对象添加/修改成员(属性或方法)一般有两种方法:
第一种是利用prototype:“对象.prototype.属性名/函数名=xxx”,更改的是对象的原型,所有对象都会被更改。
第二是:“对象.属性名/函数名=xxx.”,更改的是对象本身,只是此时的当前对象被更改。
JSON 全称;JavaScript Object Notation
方法一、描述对象:类似面向过程的使用,把函数当作类似java中的类模板来使用
function Person() {
alert("person....");
}
var p = new Person();
p.name = "Jack";
p.age = 20;
p.getAge = function() {
return this.age;
};
p.show = function() {
return this.name + "," + this.age;
};
document.write(p.show() + "<br/>");
下面这种方式,我们以后开发,传参(数据比较多)时也会用
var obj = new Object();
obj.name = "tangsan";
obj.age = 20;
//把obj作为参数传递给其它模块
方式2、描述对象: 类似面向对象的方式---类的封装---定义Class
<script type="text/javascript">
//方式2--描述对象: 类似面向对象的方式--类的封装--定义Class
function User(name, age) {
this.name = name;
this.age = age;
this.setAge = function(age) {
this.age = age;
};
this.getAge = function() {
return this.age;
};
this.show = function() {
//return name+","+age; //有bug,这两个变量是方法的参数
return this.name + "," + this.age;
};
}
var user = new User("张三", 24);
user.setAge(25);
//alert(user.getAge());
document.write(user.show() + "<br/>");
</script>
方式3、封装数据(我们平时讲的json技术主要是指这种), 类似 map
js中,"[]"用来封装数组, "{}"用来封装json--map
<script type="text/javascript">
//方式3--封装数据(我们平时讲的json技术主要是指这种), map
//js中,"[]"用来封装数组, "{}"用来封装json--map
var map = {
"name" : "张三",
"age" : 23,
"getName" : function() {
return this.name
},
"getAge" : function() {
return this.age;
},
"info" : "一些其它信息"
};
println(map.name);
println(map.age);
println(map.getName());
println(map.getAge());
println( map["getName"]() );
println(map["getName"]() + "," + map["getAge"]());
println(map.info);
var map2 = {
"1" : "aaa",
"2" : 20,
"x" : 3.14
};
//println( map2.1 ); //由于key不符合变量名的命名规则,因此无法使用该方式
println(map2.x); //AC
println(map2["1"]); //key不符合变量名的命名规则,该方式也行
println(map2["2"])();
</script>
小结:
json-map读取数据的方式有两种:
1:json对象名.属性名/方法名()---该方式当属性名和方法名不符合变量名的命名规则时,
不能用。
2.json对象名.["属性名'']------该方式不能用于方法调用。当属性名不符合变量名的命名规则
时,也能用。注意,属性名必须用引号括起来。
练习
<script type="text/javascript">
//写一个稍复杂点的 json-map
var data = {
"count" : 35,
"currentPage" : 15,
"info" : {
"stud" : [ {
"name" : "jack",
"age" : 20,
"tel" : "13800001111"
}, {
"name" : "Tom",
"age" : 21,
"tel" : "13800002222"
}, {
"name" : "李四",
"age" : 22,
"tel" : "13855551111"
} ],
"teacher" : [ {
"name" : "T1",
"age" : 30
}, {
"name" : "T2",
"age" : 33
} ]
}
};
//遍历出所有学生信息
var studs = data.info.stud;//所有学生的数组
for ( var i = 0; i < studs.length; i++) {
println(studs[i].name + "," + studs[i].age + "," + studs[i].tel);
}
var studs = data["info"].stud; //OK
//alert(studs[1]["name"]);
var studs = data.info["stud"];
//alert(studs[1]["name"]); //OK
var studs = data["info"]["stud"];
alert(studs[1]["name"]); //OK
</script>