工廠模式(工廠模式雖然解決了建立多個相似物件的問題,但卻沒有解決物件識別的問題(即怎樣知道乙個物件的型別))
function createperson(name, age, job) ;
return o;
}var person1 = createperson("nicholas", 29, "software engineer");
var person2 = createperson("greg", 27, "doctor");
建構函式模式(在全域性作用域中定義的函式實際上只能被某個物件呼叫;如果物件需要定義很多方法,那麼就要定義很多個全域性函式)
function person(name, age, job)
function sayname()
var person1 = new person("nicholas", 29, "software engineer");
var person2 = new person("greg", 27, "doctor");
原型模式(引用型別存在弊端)
function person() {}
person.prototype =
};// 重設建構函式,只適用於 ecmascript 5 相容的瀏覽器
object.defineproperty(person.prototype, "constructor", );
組合使用建構函式模式和原型模式(認可度最高)
function person(name, age, job)
person.prototype =
}var person1 = new person("nicholas", 29, "software engineer");
var person2 = new person("greg", 27, "doctor");
person1.friends.push("van");
alert(person1.friends); //"shelby,count,van"
alert(person2.friends); //"shelby,count"
alert(person1.friends === person2.friends); //false
alert(person1.sayname === person2.sayname); //true
動態原型模式
function person(name, age, job) ;
}}var friend = new person("nicholas", 29, "software engineer");
friend.sayname();
寄生建構函式模式
function person(name, age, job) ;
return o;
}var friend = new person("nicholas", 29, "software engineer");
friend.sayname(); //"nicholas"
穩妥建構函式模式
function person(name, age, job) ;
//返回物件
return o;
}var friend = person("nicholas", 29, "software engineer");
friend.sayname(); //"nicholas"
JavaScript 建立物件的七種方式
工廠模式 function createperson name,job return o var person1 createperson jiang student var person2 createperson x doctor 可以無數次呼叫這個工廠函式,每次都會返回乙個包含兩個屬性和乙個方...
Opencv顯示建立Mat物件的七種方式
方式一 方式二 建立三維的矩陣 建立乙個超過二維的矩陣 include includeusing namespace std using namespace cv int main 3維的 為2 2 2的 元素全部為0 mat array2 3,sz,cv 8uc1,scalar 0 因為是三維的,...
七種設計模式原則總結
目錄 一 物件導向解決核心問題 可維護性 可復用性 二 七種設計模式原則總結 這倆個問題是核心問題,如果這倆個問題能解決,才是真正的物件導向程式設計 設計模式原則 定義單一職責原則 single responsibility principle,srp 乙個類只負責乙個功領域中的相應職責 開閉原則 ...