面向對象的JavaScript

JavaScript定義類的方式有以下幾種:

一、通過工廠方法定義類

	function createObject(username, password) {
		var obj = new Object();
		obj.username = username;
		obj.password = password;
		//通過這種方式定義的方法,每創建一個對象就會生成一個方法,這跟Java中同一個類
		//的多個對象共享一個方法是不一樣的,也可以將方法定義在外面,但是這就將類和其
		//方法分離開,顯得不是很直觀
		obj.userInfo = function () {
			alert("UserInfo: \nusername :" + this.username + "\npassword :" + this.password);
		}

		return obj;
	}

	var user = createObject("豈必消無蹤", "塵間多少事");
	user.userInfo();

二、通過構造方法

	function Person(username, password, age) {
		this.username = username;
		this.password = password;
		this.age = age;

		this.personInfo = function () {
			
			alert("詳細信息:\n用戶名:" + username + "\n密碼:" + password + "\n歲月:" +age);
		}
	}

	var per = new Person("夜玫瑰", "kitty", 21);
	var per2 = new Person("葉傾城", "meng", 18);
	per.personInfo();
	per2.personInfo();


三、通過原型方式創建類prototype,所有對象共享同一屬性

	function Person() {
	
	}
	
	Person.prototype.loc = new Array();
	Person.prototype.nickname = "路是月的痕";
	
	Person.prototype.sayByeBye = function () {
		alert("詳細信息:\n用戶名:" + this.nickname + "\n所屬門派:" + this.loc);
	}

	var per1 = new Person();
	var per2 = new Person();

	per1.loc.push("無名小卒");
	per1.sayByeBye();
	per2.sayByeBye();

四、混合的構造函數與原型方式(推薦定義的方式),可以解決多個對象實例共享同一屬性變量的情況,對屬性定義採用構造方法方式,方法定義採用原型方式


function Person() {
		this.loc = new Array();
		this.nickname = "塵緣";
	}

	Person.prototype.info = function() {
		alert("詳細信息:\n用戶名:" + this.nickname + "\n所屬門派:" + this.loc);
	}

	
	var per1 = new Person();
	var per2 = new Person();

	per1.loc.push("傷心小箭");
	per2.loc.push("海裳朵朵");
	per2.nickname = "歲考";
	per1.info();
	per2.info();


 


五、動態的原型方式

	function Person() {
		this.nickname = "五竹";
		this.loc = new Array();

		if(typeof Person.flag == "undefined") {
			//alert("ok");
			Person.prototype.info = function () {
				alert("詳細信息:\n用戶名:" + this.nickname + "\n所屬門派:" + this.loc);
			}

			Person.flag = "true";
		}
	}

	var p1 = new Person();
	var p2 = new Person();
	
	p1.loc.push("天一神水");

	p1.info();
	p2.info();


發佈了59 篇原創文章 · 獲贊 2 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章