JavaScript isPrototypeOf()
isPrototypeOf方法可以檢測一個物件是否在另一個物件的原型鏈上。
如果在,則返回true,否則返回false。
結合此方法名稱有助於理解,isPrototypeOf由如下幾個單詞合成:
(1).is:在疑問句大致為"是否"的意思。
(2).prototype:原型。
(3).of:表示歸屬。
更多Object物件內容參閱JavaScript Object 物件一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼prototypeObj.isPrototypeOf(object)
引數解析:
(1).prototypeObj:一個物件。
(2).object:必需,判斷prototypeObj物件是否在object物件原型鏈上。
瀏覽器相容:
(1).IE瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).Opera瀏覽器支援此方法。
(6).Safari瀏覽器支援此方法。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let webName = {webName:"螞蟻部落"}; let web = Object.create(webName); console.log(webName.isPrototypeOf(web));
程式碼執行效果截圖如下:
程式碼分析如下:
(1).通過Object.create方法建立物件web,此物件的原型是webName。
(2).很自然此方法的返回值是true。
[JavaScript] 純文字檢視 複製程式碼執行程式碼function A(){} function B(){} function C(){} B.prototype=new A(); C.prototype=B.prototype; console.log(B.prototype.isPrototypeOf(new C()));
程式碼執行效果截圖如下:
建構函式C的原型與建構函式B的prototype原型指向同一個物件。
於是B.prototype自然就是C物件例項的原型物件。
再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function A(){} function B(){} function C(){} B.prototype=new A(); C.prototype=B.prototype; console.log((new C()).__proto__==B.prototype);
程式碼執行效果截圖如下:
假設建構函式F,然後建立它的物件例項f,那麼物件例項f的__proto__屬性指向F.prototype。
通過__proto__屬性可以將原型串成一條鏈,也就是原型鏈。
特別說明:雖然當前主流瀏覽器都支援__proto__屬性,但是推薦使用isPrototypeOf方法判斷。
[JavaScript] 純文字檢視 複製程式碼執行程式碼function Foo(){} let f=new Foo(); console.log(Foo.prototype.isPrototypeOf(f)); console.log(Object.prototype.isPrototypeOf(f));
程式碼執行效果截圖如下:
第二個列印結果也是true,雖然Object.prototype不是f的直接原型物件,但是在其原型鏈上。
相關閱讀:
(1).prototype參閱JavaScript prototype 原型一章節。
(2).原型鏈參閱JavaScript 原型鏈一章節。
(3).__proto__參閱__proto__屬性一章節。
相關文章
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- JavaScript -"this"JavaScript
- JavaScriptJavaScript
- javascript ??JavaScript
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- javascript — == vs ===JavaScript
- JavaScript selectedIndexJavaScriptIndex
- JavaScript deleteCell()JavaScriptdelete
- JavaScript lastElementChildJavaScriptAST
- JavaScript hasAttribute()JavaScript
- JavaScript getAttributeNode()JavaScript
- JavaScript replaceChild()JavaScript
- JavaScript remove()JavaScriptREM
- JavaScript appendChild()JavaScriptAPP
- JavaScript deleteRow()JavaScriptdelete
- JavaScript clientYJavaScriptclient
- JavaScript之thisJavaScript
- JavaScript isFinite()JavaScript
- JavaScript toggle()JavaScript
- JavaScript Boolean()JavaScriptBoolean
- JavaScript escape()JavaScript
- JavaScript parseFloat()JavaScript
- JavaScript unescape()JavaScript
- JavaScript call()JavaScript
- JavaScript bind()JavaScript
- JavaScript previousElementSiblingJavaScript
- JavaScript preventDefault()JavaScript
- JavaScript insertRow()JavaScript
- JavaScript removeChild()JavaScriptREM
- JavaScript nextElementSiblingJavaScript