在js中,如果你想輸入乙個的資訊,例如姓名,性別,年齡等,如果你用值型別來儲存的話,那麼你就必須要宣告很多個變數才行,變數宣告的多了的話,就會造成變數汙染。所以最好的方式就是儲存到物件中。下面能我就給大家介紹幾種建立物件的方式,並且給大家說一下他們的優缺點
方式一:物件字面量
var obj=
缺點:只能建立一次物件,復用性較差,如果要建立多個物件,**冗餘度太高
方式二:使用內建建構函式
var obj=newobject();
obj.name="李白";
obj.type="刺客";
obj.skill="舞劍";
缺點:只能建立一次物件,復用性較差,如果要建立多個物件,**冗餘度太高
方式三:工廠模式(不推薦使用)
functioncreat(name,type,skill)
return
obj;
}var hero=creat("李白","刺客","寫詩");
var heronext=creat("趙雲","突進","將軍");
缺點:物件無法識別,因為所有的例項都指向乙個原型
方法四:建構函式模式
functionperson(singer,song,type)
var obj=new person("田馥甄","小幸運","流行歌");
console.log(obj);
注意點:1.如果不寫返回值,預設返回的是新建立出來的物件 (一般都不會去寫這個return語句)
2.如果我們自己寫return語句 return的是空值(return;),或者是基本型別的值或者null,都會預設返回新建立出來的物件
3.如果返回的是object型別的值,將不會返回剛才新建立的物件,取而代之的是return後面的值
優點:例項時可以識別為乙個特定的型別
缺點:建構函式中定義函式,那麼每次建立物件,都會重新建立該函式,這樣會導致全域性變數增多,造成汙染,**結構會混亂,不易維護
方法五:原型
functionperson(name, age, gender)
var p =new person("張學友",18,"male");
var p1 = new person("劉德華",19,"male");
person.prototype.sayhello = function
() person.prototype["sing"] = function
() p.sayhello();
p1.sayhello();
p.sing();
p1.sing();
優點:說明:建構函式的原型物件中的成員,可以被該建構函式建立出來的所有物件訪問,而且,所有的物件共享該物件,所以,我們可以將建構函式中需要建立的函式,放到原型物件中儲存,這樣就解決 全域性變數汙染的問題 以及 **結構混亂的問題
缺點:不能初始化引數
深入之建立物件的多種方式以及優缺點
1.工廠模式 缺點 物件無法識別,因為原型都指向object function pe return o 2.建構函式模式 優點 例項可以識別為乙個特定的型別 缺點 每次建立例項每個方法都要被建立一次 function person name var person new person zhansan...
Js繼承方式及優缺點
作為一門基於物件的語言,js中也可以通過繼承來實現父型別和子型別之間屬性或方法的傳遞,其方式有以下幾種 1 原型鏈繼承 子型別的原型物件是父型別的例項即subertype.prototype new supertype 缺點 子型別繼承了父型別原型中的所有屬性和方法,但是對於引用型別的屬性值,所有例...
建立執行緒的方式及優缺點
定義父類thread的子類,並重寫父類方法中的run 方法,該方法的方法體表示了該執行緒要完成的任務,所以稱run 方法為執行體。建立該thread子類的例項物件。呼叫該執行緒物件的start 方法來啟動該執行緒。定義 runnable 介面的實現類,並重寫該介面的 run 方法,該 run 方法的...