一:原始方式
解釋:原始方法建立物件,通過new關鍵字生成乙個物件,然後根據js是動態語言的特性新增屬性和方法,構造乙個物件。其中this是表示呼叫該方法的物件。
缺點:多次建立物件,則需要重複**多次,不利於**的復用。
二:工廠模式
var getage = function ()
var getname =function ()
function person()
//呼叫
var student = person();
alert(student.name);
說明:1.在函式中定義物件,並定義物件的各種屬性,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函式之外,這樣可以避免重複建立該方法。
2.引用該物件的時候,使用的是var student = person();而不是var student = new person();因為該函式裡面已經建立了物件
3.在函式的最後返回該物件
4.不推薦使用這種方式建立物件,但應該了解。
三:建構函式方式
function person(name,age)
this.getage=function()
}var student = new person("sly",18);
student.getname();
student.getage();
說明:1.與工廠方式相比,使用建構函式建立物件,無需在函式內部重新建立物件,而使用this指代,並且無需return
2.同工廠模式一樣,雖然屬性的值可以為方法,仍建議將該方法定義在函式之外。
3.同樣,不推薦使用這種方式建立物件,但仍需要了解
四:原型模式
var getage = function ()
var getname =function ()
funcction person()
person.prototype.name="sly";
person.prototype.age="18";
person.prototype.getname=getname;
var student = new person();
alert(student.name);
說明:1.函式中不對屬性進行定義
2.利用prototype屬性對屬性,方法進行定義
3.呼叫方法的過程:呼叫student.getname();先看例項中有沒有,有調則用,沒有的話則追蹤到原型,有調之,沒有則呼叫失敗。
4.不推薦使用這種方式建立物件
五:混合的建構函式,原型方式(推薦)
function person(name,age)
person.prototype.getname = function()
var student = new person("sly","18");
alert(student.getname());
說明:1.該模式是指混合搭配使用建構函式和原型方式
2.將所有的不是方法的屬性放到建構函式中定義,將所有屬性值為方法的屬性利用prototype定義
六:動態原型方法
function person(name,age)
person.getname = true;//設定為true,不必再為prototype新增方法。}}
說明:這種方法和建構函式/原型方式大同小異。只是將方法的新增放到了建構函式之中,同時在建構函式person上新增了乙個屬性用來保證if語句只能成功一次。
js 建立物件的幾種方式
第一種 工廠模式 例1 function createobj name,age return o var per1 createobj 張三 20 per1.sayinfo 缺點 無法知道物件的型別 第二種 建構函式模式 例2 function person name,age var per2 ne...
js建立物件的幾種方式
雖然object建構函式或物件字面量都可以建立單個物件,但這些方式有個明顯的缺點,那就是使用同乙個介面創造很多物件,會產生大量的重複 所以產生了下面幾種模式。1 工廠模式 function createperson name,age,job o.name name o.age age o.job j...
js建立物件的幾種方式
js高階程式設計有很詳細的說明,這裡就不做詳解了,只是做個筆記和總結,方便記憶和理解 1 工廠模式 最簡單的模式,生產並返回乙個object物件 function createper name var p1 createper js 2 建構函式形式,比較常用的形式,在元件封裝中經常用到。funct...