JS基礎丨 13 原型及原型鏈

2021-08-28 17:21:17 字數 2038 閱讀 4066

01. 建構函式

01. 建構函式的建立

01. 普通函式用new關鍵字建立

02. new 建構函式:不佔記憶體

03. 建構函式即是類

04. 寫在建構函式中的屬性為私有化

05. 寫在原型中的屬性與方法為共有的

02. 建構函式原型上的屬性及方法:

01. 字面量建立建構函式的原型屬性及方法;

02. 構造器指回自身: constructor: person;

03. 原型上的屬性及方法被所有的例項化物件所共享;

03. 原型的缺點:

01. 所有的物件都是共享的,乙個修改全域性影響

02. 不能像建構函式建立物件一樣賦值: var person = new person("jazz",20,"boy");

02. 原型: 是類(建構函式)自帶的屬性prototype

任何乙個函式都具備的屬性

該屬性是有個指標,指向乙個物件

原型可以被任何乙個建構函式共享其屬性

作用:可以通過prototype屬性給類新增自定義屬性或者方法

優點:原型建立的自定義屬性和方法是共享的(節省記憶體),建構函式建立的屬性和函式則是私有的;

03. prototype、protptype、__proto__

0.1 constructor: 原型物件prototype的屬性 --> 指向當前原型的建構函式

建構函式的.prototype.constructor === 建構函式

0.2 protptype: 建構函式的屬性 --> 指向原型

__proto__: 是例項物件的屬性, 指向建構函式所指的原型

例項化物件.__proto_ === 建構函式.prototype

0.3 使用字面量建立原型的問題:

(建構函式.prototype.constructor === 建構函式)// false

04. 例項化物件與建構函式及其原型的關係

01. 建構函式.prototype.isprototypeof(): 是原型物件的方法,可以判斷此物件是否指向該原型

01. 查詢物件的屬性:查詢例項物件中,是否存在該屬性,如果有就返回該屬性的值

02. 如果沒有,查詢原型物件中是否存在該屬性!如果存在,則返回該屬性的值

02. 例項化物件上, 能夠使用的屬性方法:

01. 建構函式的原型,新增自定義屬性

02. delete: 直接刪除物件屬性

03. 先從建構函式中取值,未找到再從原型中取值

01. in: 判斷某屬性是否存在建構函式或者原型中

console.log("name" in obj);// 存在為 true

02. hasownproperty() 判斷是否為例項物件的屬性(不會去原型中找)

03. 判斷某屬性是否僅存在原型中: (in方法判斷)==true && (hasownproperty)==false

function isinprototype(obj, name)

console.log(isinprototype(abox,"name"));// true

0.5 組合繼承

組合繼承: 原型鏈+借用建構函式(物件冒充)

借用建構函式來(物件冒充),繼承屬性

可以使用原型鏈來繼承方法

0.6 object物件的常用方法:

object.hasownproperty( ) 檢查屬性是否為例項化物件的屬性

object.isprototypeof( ) 乙個物件是否是另乙個物件的原型

object.propertyisenumerable( ) 是否可以通過for/in迴圈看到屬性

object.tostring( ) 定義乙個物件的字串表示

object.tolocalestring( ) 返回物件的本地字串表示

object.valueof( ) 指定物件的原始值

js原型及原型鏈

在建構函式建立出來的時候,系統會預設幫建構函式建立乙個原型物件。原型物件中的屬性和方法可以被建構函式建立出來的物件訪問。建構函式.prototyoe 屬性 方法 的查詢原則 當訪問物件的成員的時候,會在自身找有沒有,如果有直接使用,如果沒有找到,則去當前物件的原型物件中找,如果找到了直接使用 如果沒...

js原型及原型鏈

每個物件都有proto屬性用於指向建立它的建構函式的原型物件。function animal name animal.prototype.getname function animal.prototype.getage function var animal1 newanimal kate var ...

js基礎 原型和原型鏈

原型是js中的乙個重要知識點,之前一直都原型一知半解,最近在做js的基礎梳理,感覺很有必要做一下關於原型和原型鏈的總結。一 普通物件和函式物件 了解原型,所有我們需要知道js中變數歸根到底是啥,可能大家都聽說過 萬物皆物件。但物件也會有一定區分,存在 普通物件 和 函式物件,區分規則 通過 new ...