構造物件,原型和原型鏈筆記

2021-09-12 23:23:01 字數 2863 閱讀 2761

物件導向:物件導向、原型

對原型、原型鏈、 function、object 的理解

什麼是 js 原型鏈?物件導向程式設計(oop)是一種基於「物件」概念的程式設計正規化。該物件包含資料(屬性),以及一些執行過程的**(即方法)。物件的乙個特性是,呼叫物件的方法過程可以訪問並經常修改與其關聯的物件的資料字段(物件具有「this」或「self」的概念)。

把某個功能看成乙個整體(物件),通過呼叫物件的某個方法來啟動功能。在用的時候不去考慮這個物件內部的實現細節,在去實現這個物件細節的時候不用管誰在呼叫

物件導向的寫法

car.擰鑰匙()

car.掛擋()

car.踩油門()

通過new 函式名('引數,引數')得到乙個物件,就相當於這個物件就是這個函式構造出來的,這個物件是函式的例項

function person(name) 

}var p = new person('hunger')

instanceof是乙個操作符,可以判斷物件是否為某個函式的例項

p1 instanceof person; // true

p1 instanceof object;// true

instanceof判斷的是物件,非物件的資料不能判斷

1 instanceof number; // false
1、對函式使用new表示式就是建構函式

2、每個函式都有名稱為prototype屬性,叫做原型,是乙個物件

3、每個物件都有乙個內部屬性 _proto_(規範中沒有指定這個名稱,但是瀏覽器都這麼實現的)指向其型別的prototype屬性,類的例項也是物件,其__proto__屬性指向「類」的prototype

4、所有例項(物件)都會通過原型鏈引用到型別(函式)的prototype(原型),prototype相當於特定型別所有例項都可以訪問到的乙個公共容器,一般用來共同呼叫的函式

總結:我們通過函式定義了類person,類(函式)自動獲得屬性prototype

每個類的例項都會有乙個內部屬性__proto__,指向類的prototype屬性

預設情況下,們寫建構函式是不需要return的,建構函式自動將this代表的物件返回出來!

但如果我們寫了return語句,如果return是基本型別,會被認為寫錯了無效。obj1和2還是this代表的物件。如果return是物件,那構造的物件就等於return後面的物件。

所有陣列都是由array這個函式構建的。陣列的所有方法都是array.prototype或者他們的原型鏈上面的。當我們直接賦值的方式生成乙個陣列的時候,就相當於直接用new array的方法構建乙個物件

array函式也是由object函式構建的array instanceof object===true

陣列可以呼叫valueof這個方法,但valueof這個方法不在array.protototype內而是在object.prototype內。

首先 a陣列 會找自己的 valueof方法;沒有找到,就會沿著__proto__ 屬性繼續到建構函式 array 的 prototype 裡找 valueof 方法;如果還是沒有找到,再繼續往 array.prototype 的proto即 object.prototype 找 valueof 方法,最後找到 valueof 方法。

總結:乙個物件呼叫其方法,先在自己的自由屬性內去找,找不到就去原型上去找,如果原型內也找不到,就到原型的原型上去找,直到找到該方法。而這構成的鏈就是原型鏈。如下圖

當 new 乙個函式的時候會建立乙個物件,『函式.prototype』 等於 『被建立物件.__proto__』

一切函式都是由 function 這個函式建立的,所以『function.prototype === 被建立的函式.__proto__』

一切函式的原型物件都是由 object 這個函式建立的,所以『object.prototype ===

一切函式.prototype.__proto__』

建議閱讀若愚老師這邊文章裡面的例子,鞏固印象對原型、原型鏈、 function、object 的理解

原型物件和原型鏈

基本型別 string number boolean null undefined object 引用型別 string number boolean object function array date regexp error 引用型別都是物件 建立物件的同時會自動建立乙個名稱叫做 proto ...

javascript原型和原型鏈,建構函式和例項

原型 建構函式 就是工廠,原型的例項就是工廠按照圖紙生成的工具 比如汽車 原型鏈 隱式的 就是生成的工具所具有的功能,而功能是工具的屬性,生成什麼樣的工具是由工廠 建構函式 決定的,圖紙是有工廠和客戶共同決定的 var ca ctory function options this.stop func...

JS原型物件,原型鏈

js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...