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();