Javascript 面向对象编程小结

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Javascript 面向对象编程小结</title>
<script src="JSLogger.js" debug="true"></script>
<script language="javascript">
		var cat ={Name:'tom',Color:'red'};
		JSLogger.log(cat);
		for(var p in cat){
			//JSLogger.log("p = "+p);//对象的各个属性 :Name,Color
		}
		var arr = ["a","b","c"];
		for(var p in arr){
			//JSLogger.log("p = "+p);//数组的是索引: 0 1 2 
		}
		function Cat(name,color){
			this.Name = name;
			this.Color = color;
		}
		var cat1 = new Cat("Tom","black");
		//通过prototype方法给cat的原型对象Cat添加一个方法say或者属性,这样cat的原型Cat的每个实例化的对象都具有了这个方法say
		Cat.prototype.say = function(){
			JSLogger.log("my name is "+ this.Name);
		}
		cat1.say();

		JSLogger.log(cat1);

		JSLogger.log("Name" in cat1);//使用in判断某个对象时候具有一个属性


		//使用apply实现继承
		function Animal(age){
			this.Kind="动物";
			this.Age = age;
		}
		function Dog(name,color,age){
			Animal.apply(this,[arguments[2]]);
			//解释:将Animal的上下文对象换成this就是Dog对象,然后执行Animal的构造方法,即this.kind = '动物',所以Dog有了kind属性,而且Kind="动物"
			//		同时将Dog构造方法的第三个参数age的值,拼成数组传递给Animal的构造方法,所以Dog有了Age属性,而且Age = 参数age
			this.Name = name;
			this.Color = color;
		}

		var dog = new Dog("Tom","red",23);
		JSLogger.log(dog);
		//通过prototype实现继承
		//Dog.prototype = new Animal();
		//Dog.prototype.constructor = Dog;

		var Chinese = { nation:'中国',fullName:"中华人民共和国" };
		//var Doctor ={ career:'医生' }
		//将JS格式的{}对象转换成function方法 (很牛逼)
		function object(o) {
			function F() {};//生成一个空的function对象F
			F.prototype = o;//将F的构造指向作为参数传入的o,那么F将具有o的所有属性
			return new F();//然后返回一个F的实例,也就是返回了一个新的function对象,同时也具备了o的所有属性
		}
		var Doctor = object(Chinese);
		//说明:上述方法和 var Doctor = Chinese的区别是:使用object方法是复制chinese的属性,而赋值方法是指针引用,对Doctor的改变也会改变Chinses
		//Doctor.prototype.Age = 32;//因为object方法中 进行了F.prototype = o的设置,所以F失去了prototype的属性
		Doctor.Age = 32;//给对象添加新的属性。
		JSLogger.log(Chinese);//fullName=中华人民共和国 --nation=中国
		JSLogger.log(Doctor);//Age=32 fullName=中华人民共和国 nation=中国

		
		

</script>
</head>
<body>
</body>
</html>
 

你可能感兴趣的:(JavaScript)