1. 程式人生 > 其它 >javascript建構函式2

javascript建構函式2

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*
			 * 建立一個Person建構函式
			 * 	- 在Person建構函式中,為每一個物件都添加了一個sayName方法,
			 * 		目前我們的方法是在建構函式內部建立的,
			 * 			也就是建構函式每執行一次就會建立一個新的sayName方法
			 * 		也是所有例項的sayName都是唯一的。
			 * 		這樣就導致了建構函式執行一次就會建立一個新的方法,
			 * 			執行100次就會建立100個新的方法,而100個方法都是一摸一樣的
			 * 			這是完全沒有必要,完全可以使所有的物件共享同一個方法
			 */
			function Person(name , age , gender){
				this.name = name;
				this.age = age;
				this.gender = gender;
				//向物件中新增一個方法
				//this.sayName = fun;
			}
			
			//將sayName方法在全域性作用域中定義
			/*
			 * 將函式定義在全域性作用域,汙染了全域性作用域的名稱空間
			 * 	而且定義在全域性作用域中也很不安全
			 */
			/*function fun(){
				alert("我是:"+this.name);
			};*/
			//向原型中新增sayName方法
			Person.prototype.sayName = function(){
				alert("我是:"+this.name);
			};
			
			//建立一個Person的例項
			var per = new Person("張三",18,"男");
			var per2 = new Person("李四",28,"男");
			per.sayName();
			per2.sayName();
			
			//console.log(per.sayName == per2.sayName);
			
			
		</script>
	</head>
	<body>
	</body>
</html>