物件導向2

2022-08-22 22:18:16 字數 3310 閱讀 9330

1.

物件導向的目的就是生成物件object

2.

生成物件的方式

(1)

單例模式(字面量定義)var obj={}

(2)

類的例項  var obj=new obeject()

(3)

工廠模式

建構函式

:扮演三種角色

普通函式

普通的物件

工廠模式,生成的物件必須要返回,建構函式模式不用return,建構函式模式預設

return

的是this

,在建構函式內的

this

就是例項物件。

建構函式如果人為return的不是物件,直接忽略,如果人為

return

的是物件,就取代

this

工廠模式生成的例項物件的__proto__直接指向基類

object

的原型建構函式生成的例項物件的__proto__指向他父類的原型,然後父類的原型上的

__proto__

指向基類

object

的原型。

每個例項和例項之間都是獨立的個體,他們之間的屬性互不干擾,是不等的,如果例項和例項之間的屬性相等,則這個屬性必須是父類的原型上的屬性。是因為父類原型上的屬性是可繼承的,是共享的。

在操作obj.屬性的時候,首先看這個屬性是私有的還是從父類的原型上繼承的,如果是私有的直接使用,如果私有的沒有呢就檢視父類的原型上有沒有,如果有就直接使用,如果沒有呢,再次向父類的父類的原型上查詢,一直查到基類

object

上為止,如果

object

也沒有就得到

undefined

。這就是原型鏈。

例項的__proto__上的屬性

instanceof  判斷物件是不是這個類的例項物件

isprototypeof()判斷例項物件是否是父類的原型

getprototypeof()獲取例項物件的原型

hasownproperty()判斷乙個屬性是不是自身(私有)的屬性

in 判斷乙個屬性是不是這個物件上的不管是私有的還是公有的

例項物件的原型就是他父類的原型

如果不給類的原型指定乙個物件,這個例項物件的__proto__上有乙個

constructor

的屬性。如果給這個類的原型指定了乙個物件,例項上的

__proto__

就沒有constructor

屬性了。

建構函式裡和原型裡的this都是指向例項物件

this指向問題

1.

this是乙個物件,函式外的

this

都指向window

2.

函式內的this,他的指向跟函式呼叫有關,看函式前面有沒有

.,有點就指向

.前面的物件,沒有就指向

window

3.

定時器的this永遠是

window

,自執行函式裡的

this

是window

4.

建構函式裡的this和原型上的

this

都指向例項物件

改變this指向的方法

提前將this賦值

call

執行是一樣的都是將前面函式內的

this

改成第乙個引數,然後執行前面的函式,不同在從第二個引數開始

是乙個陣列

bind bind是只改變前面函式的

this

,但是不執行前面的函式,需要加乙個

()才執行

繼承

1.

call繼承 子類繼承父類

將父類的私有屬性繼承為子類的私有屬性

原型繼承

將父類的私有和公有屬性都繼承為子類的公有屬性

子類的原型=父類的例項

物件導向2

6 static關鍵字 用法 是乙個修飾符,用於修飾成員 當成員被靜態修飾後,就多了乙個呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。類名.靜態成員 static特點 static成員 也叫 類變數 1 隨著類的載入而載入 也就是說 靜態會隨著類的消失而消失。說明它的生命週期最長 2 優先於...

物件導向2

一.昨日內容回顧 1.匿名函式 lambda 引數 返回值 def chi return 飽了 lambda 飽了 2.sorted 排序 sorted iterable,key function,reverse false 3.filter 篩選 filter function,iterable ...

物件導向 2

1.物件導向的三大特性 封裝 繼承 多型。一 封裝 1.封裝的學習就是學習類成員的訪問許可權的控制。是設計類的時候需要考慮的問題。概念 通過對類中的成員的訪問許可權的控制,實現對外部類的訪問的可見和隱藏的控制的過程。2.類成員的訪問許可權的控制,通過訪問許可權修飾符來控制。可以在類成員的前面新增訪問...