原型樣例:
//建立乙個撲克類
letpoker
=function()
;let poker=
newpoker()
;poker.numbers=52;
poker.cates=1;
poker.users=
"students"
;object.create=object.create||
function
(obj)
; func.prototype=obj;
return
newfunc()
};let clonepoker=object.
create
(poker)
;console.
log(clonepoker)
;
關於__proto__屬性:
function
person
(name)
person.prototype.
getname
=function()
;let
objectfactory
=function()
;//這裡類似於new object();
let constructor =
.shift.
call
(arguments)
;//獲取第乙個引數
obj.__proto__ = constructor.prototype;
//物件的__proto__屬性指向constructor.prototype屬性
let ret = constructor.
(obj, arguments)
;//用建構函式給物件設定屬性
return
typeof ret ===
'object'
? ret : obj;
//保證是乙個物件};
let el=
objectfactory
(person,
'xuhacker');
console.
log(el.name)
;console.
log(el.
getname()
);console.
log(object.
getprototypeof
(el)
=== person.prototype)
;
關於繼承
//孫子請求父親,若無相關的屬性,則該父親會去它的建構函式的原型(孫子的爺爺)找該屬性
let obj=
;//設定乙個建構函式
letfunc
=function()
;func.prototype=obj;
//obj的物件屬性指向建構函式的原型
let el=
newfunc()
;//這時候就能new了
console.
log(el.id)
;//輸出1
//js本質上是以一種基於原型建立(轉殖)物件的語言,雖然在es6裡面有了新的class,本質上還是基於原型
//es6裡面的物件導向
class
person
;getname()
}let person=
newperson
("xuhacker");
console.
log(person.
getname()
);class
student
extends
person
getsays()
}let student=
newstudent
("lee",23
);console.
log(student.age)
;console.
log(student.name)
;console.
log(student.
getsays()
);
讀書筆記 設計模式(四) 原型模式
用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。1 類初始化需要消化非常多的資源,這個資源包括資料,硬體資源等,通過原型拷貝避免這些消耗。2 通過new產生乙個物件需要非常繁瑣的資料準備或訪問許可權,這時可以使用原型模式,3 乙個物件需要提供給其他物件訪問,而且各個呼叫者可能都需要修改...
《設計模式之禪》讀書筆記 8 原型模式
定義 原型模式是指用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件,簡而言之,就是不通過new關鍵字來產生乙個物件,而是通過物件複製來實現。類圖 實現實現乙個介面,然後重寫clone方法,就完成了原型模式 package com.sigalhu.prototypepattern pub...
設計模式讀書筆記之結構型模式
1.介面卡模式 adapter 基礎教程 看了 設計模式 和這篇文章,覺得介面卡的乙個重點就是物件所提供的介面並不一定能適應我們的新環境,我們就要對其轉換成我們需要的介面 其實不適應新環境就是類成員函式名稱不一樣,無法通過父類指標直接操作子類 設計模式裡面有乙個例子就是在程式上繪製幾何圖形的問題,我...