提取js
//建立物件//工廠模式
//ecmascript無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節
function createperson(name , age , job)
return o;
}var person1 = createperson("寶清老窖" , 29 , "software engineer");
var person2 = createperson("金寶清" , 26 , "doctor");
console.log(person1);
console.log(person2);
console.log('---------------------------');
//這種模式雖然解決了建立多個相似物件的問題,但是卻沒有解決物件的識別問題。
//建構函式模式
function person(name , age , job)
}var person1 = new person("金寶清" , 26 , "快遞員");
var person2 = new person("寶清老窖" , 29 , "soft");
console.log(person1);
console.log(person2);
//用person取代createperson()函式,不同之處總結
//1、沒有顯示地建立物件
//2、直接將屬性和方法賦給了this物件
//3、沒有return語句
//new 乙個function的四個步驟
/*1、建立乙個新的物件
*2、將建構函式的作用於賦給新的物件(因此this就指向了這個新的物件)
*3、執行建構函式中的**(為這個新物件新增屬性)
*4、返回新物件
* */
//person1和person2分別儲存著person的乙個不同的例項。這兩個物件有乙個constructor屬性,該屬性指向person
alert(person1.constructor == person);//true
alert(person2.constructor == person);//true
//檢測物件型別用 instanceof
alert(person1 instanceof object);//true
alert(person1 instanceof person);//true
alert(person2 instanceof object);//true
alert(person2 instanceof person);//true
//建立自定義建構函式意味著將來可以將他的例項標示為一種特定的型別;這正是建構函式模式勝過工廠模式的地方
//person1和person2之所以是object的例項,是因為所有物件均繼承自object(以後討論)
//1、將建構函式當作函式
//建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同
//建構函式也是函式不存在特殊語法
//任何函式,只要通過new來操作符來呼叫它就可以作為建構函式
//任何函式,通過函式名來呼叫就是普通函式
//構造呼叫
var person = new person("寶清老窖" , 29 , "software engineer");
person.sayname();//寶清老窖
//普通呼叫
person("寶清老窖" , 29 , "software engineer");
window.sayname();//寶清老窖
//在另乙個物件的作用於中呼叫
var o = new object();
person.call( o , "金寶清" , 29 , "software engineer")
o.sayname();
//2、建構函式的問題
//用new建構函式時,函式裡面的方法每次都要執行一次,因為函式是物件
function person(name , age , job)
//所以new出來的實體物件的sayname不是同乙個物件,如:
var p1 = new person("寶清老窖" , 10 , "software");
var p2 = new person("金寶清" , 20 , "快遞");
alert(p1.sayname == p2.sayname); // false
//解決方式是把函式提出來
function person(name , age , job)
function sayname()
//這種方式很不好啊,汙染全域性不說,沒有封裝性啊
//所以下篇文章我會用原型鏈來解決這個問題
js中工廠模式建立物件
人的物件 var person new object person.name 小明 person.男 person.like function person.like 呼叫方法 狗的物件 var dog new object dog.name 哈士奇 dog.age 3 dog.home funct...
」物件建立」模式 工廠模式
物件建立 模式 通過 物件建立 模式繞開new,來避免物件 new 過程中所導致的緊耦合 依賴具體類 從而支援物件建立的穩定,他是介面之後的第一步工作 典型模式 factory method abstract factory prototype builder 動機在軟體系統中,經常面臨著建立物件的...
簡單工廠模式 物件建立
include include using namespace std 工廠模式 客戶類和工廠類分開。消費者任何時候需要某種產品,只需向工廠請求即可。消費者無須修改就可以接納新產品。缺點是當產品修改時,工廠類也要做相應的修改。如 如何建立及如何向客戶端提供。第一,基類存放資料 第二,派生類有很多,派...