JSON技术

给一个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>

猜你喜欢

转载自blog.csdn.net/lx678111/article/details/81237116