js繼承原理

2021-07-04 13:29:55 字數 1114 閱讀 1723

首先要理解

建構函式:存在乙個prototype    指向他的原型物件

原型物件其實就是一塊空間,可以是物件的實列

實列:存在乙個[[prototype]]    指向他的建構函式的原型物件一般__proto__表示

new 來建立的實列是開闢乙個新的空間所以是無法共享元素的但是new 的建構函式的 prototype 可以指定到乙個具體的空間然使用這建構函式的所有實列都

可以找到這個空間

當查詢乙個物件的屬性或者方法時,js會向上遍歷他的原型鏈,直到找到給定的屬性名為止,如果沒找到就是undefined

eg:function dog(name)

dog.prototype = ;//這個是可以共享的空間

var doga = new dog('大毛');

var dogb = new dog('二毛');

alert(doga.species); // 犬科

alert(dogb.species); // 犬科

isprototypeof

這個方法用來判斷prototype物件和某個例項之間的關係,例如

alert(dog.prototype.isprototypeof(doga)); //true

hasownproperty

每乙個例項物件都有乙個該方法,用來判斷該例項中的某個屬性是來自本地屬性,還是繼承自原型物件屬性。例如

alert(doga.hasownproperty(name))//true

in運算子

in運算子可以判斷某個屬性是否屬於例項物件,不管是本地屬性還是繼承自原型物件屬性。如

alert("name" in doga); //true

alert("species" in doga); //true

var foo = 1;

function main()

第一題解答:首先根據js的變數提公升規則,可以知道,全域性的foo被main函式遮蔽了,main函式在內部定義了乙個foo同名的變數,該變數在第乙個console之前只定義而未賦值,故為undefined(undefined有兩種情況會出現,已定義未賦值,未定義)。

而在第二個console的時候,this指向的是window,故輸出為1

js繼承的原理

js中的物件和函式最頂級的兩個類為object和function,任何由我們定義的函式或物件都是這兩個類的子類 也就是說js中的一切都是物件.一.函式物件和一般物件 物件分為函式物件和一般物件,函式物件,比如function f var f function var f new function a...

JS繼承原理剖析

1 原型鏈繼承 建構函式 原型和例項之間的關係 每個建構函式都有乙個原型物件,原型物件都包含乙個指向建構函式的指標,而例項都包含乙個原型物件的指標。繼承的本質就是複製,即重寫原型物件,代之以乙個新型別的例項。function supertype supertype.prototype.getsupe...

js繼承的原理 方式以及優缺點

之前看js繼承問題,自己查閱資料,看到有一篇文章整理還可以,便在文章的基礎上又細化了一些。js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。js繼承的實現方法 原型鏈繼承 構造繼承 例項繼承 拷貝繼承 組合繼承 寄生組合繼承。既然要實現繼承,那麼...