1.自定义javascript对象封装数据与方法

 

2.JSON

JavaScript Object Notation ,即JavaScript 对象表示法

 



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<script type="text/javascript" src="mytool.js"></script>
	<script type="text/javascript">
	
	//javascript命名规范示例 
	var iN = 1;
	var s = "aaa";
	var bX = true;
	var oMap = {};
	
		/**
		 javascript中存储数据的容器 : 数组 ,数组适用于处理一类有序的数据 ,数据与角标有对应关系,则可以用数组来存储映射关系 
		   对于没有规律,更复杂的数据存储,需要自定义对象来完成数据的存储 
			javascript中自定义对象,完成复杂数据的存储
		*/
		
		//下面4中定义方式有不同的适用场景
		
		
		//第一种方式---通过函数创建对象,然后再给对象动态赋予属性,属性可以是简单类型,也可以是复杂类型
		function Person() {}	
		var p = new Person();
		p.name = "lisi";
		p.age = 20;
		p.friends = ["smith","john","tom"];//数组中可以存放其它数组,或对象 
		
		sop(p.name + "," + p.age);//lisi,20
		sop(p["name"] + "," + p["age"]);//lisi,20
		sop(p.friends);//smith,john,tom
		
		sop("<hr/>");
		
		
		//第二种方式 ---通过Object创建对象 
		var god = new Object();
		god.name = "god";
		god.weapon = "ideology";
		god.fight = function() {
			return this.name + " is fighting, use:" + this.weapon;
		}
		sop(god.fight());//god is fighting, use:ideology
		
		sop("<hr/>");
		
		
		//第三种方式--->通过函数创建对象,利用"构造器"进行数据的初始化,不同的对象进行不同的初始化,非常灵活 ,与java中操作对象非常类似了
		//适用于定义一种数据比较复杂的类型,而且经常变化,又需要保持变化过程【 在客户端的进行数据存储与处理】 
		function Person(name,age) {
			this.name = name;
			this.age = age;
			this.getName = function() {
				return this.name;
			}
			this.setName = function(name) {
				this.name = name;
			}
			this.getAge = function() {
				return this.age;
			}
			this.setAge = function(age) {
				this.age = age;
			}
		}
		
		var p = new Person("zhangsansan",20);
		sop(p.getName()+","+p.getAge());//zhangsansan,20
		p.setName("小强");
		p.setAge(30);
		sop(p.getName()+","+p.getAge());//小强,30
		
		sop("<hr/>");
		
		
		//第四种方式 ---通过{}创建对象 ,运用于初始化一堆数据,
		//当成Map集合使用 ,先初始化, 再根据key从这个对象中动态读取数据  
		//这种方式适用于初始化有映射关系的数据,不管数据有多大,关系嵌套有多深,都能用这种方法处理,而且简单 
		var oMap = {};//定义一个对象 
		//定义一种数据交换格式
		var oItems = {
				itemA:"aaaaaaaa",
				"itemB":"bbbbbbbb"
		}
		//访问对象中的属性的两种方式 :对象.属性名  ,  对象["属性名"],两种都可以 !
		sop(oItems.itemA);
		sop(oItems["itemA"]);
		sop(oItems.itemB);
		sop(oItems["itemB"]);
		//注意:必须用var来显示的定义变量,否则IE9不支持,其它IE版本未测试 
		//不用var显示定义变量,firefox也能正常运行,但是,为了规范,在使用for in 时都用var来显示的定义变量吧!
		for(var item in oItems) {
			sop("key="+item+",value="+getValue(item));
		}
		
		function getValue(key) {
			return oItems[key];
		}
		
		
		//----------------------------JSON-------------------------------------//
		//------>其实就是当前流行的JSON---->JavaScript Object Notation JavaScript 对象表示法
		sop("<hr/>");
		//第四种方式其实就是在定义一个JSON格式的 javascript对象 !!!
		//标准JSON格式要求key为字符串,使用"key"进行描述,value类型丰富!
		var oProduct = {
					    "product_A": [
					        {
					            "name": "water",
					            "price": 3.00
					        },
					        {
					            "name": "cigarette",
					            "price": 20.00
					        }
					    ],
					    "product_B": [
					        {
					            "name": "rich",
					            "price": 20.89
					        },
					        {
					            "name": "meat",
					            "price": 25.67
					        }
					    ]
					}
		
		for(var product in oProduct) {
			var productArray = oProduct[product];//key:product_A/product_B, value:对应的数组
			for(var prod in productArray)//逐个获取数组中的对象
				sop(productArray[prod].name+":"+productArray[prod].price);//通过数组的角标获取到对应的对象 ,再从对象中取出属性值
		}
		
		/*
		遍历结果:
			water:3
			cigarette:20
			rich:20.89
			meat:25.67
		*/
	</script>
</head>
<body>

</body>
</html>