js高階 探索instanceof

2022-10-08 21:03:20 字數 2361 閱讀 8473

a instanceof a

作用:判斷左邊這個物件a(例項或屬性)是不是右邊這個型別(建構函式)a的例項,左邊一般是物件的屬性或物件的例項,右邊一般是建構函式或物件,主要是通過左邊的例項的隱式原型屬性一直往原型鏈中找,一直都是通過原型物件的隱式原型屬性往原型鏈中找,右邊也通過建構函式的顯示原型屬性往原型鏈中找,如果左邊和右邊都找到盡頭了還沒有相交的部分,則左邊的例項不是右邊建構函式的例項,除非他們的原型在原型鏈中有相交的才相等,相交代表相等。左邊是例項,根據隱式原型屬性找,右邊是物件,根據顯示原型屬性找,兩邊各自從自己的方向出發。

*表示式: a instanceof b

*如果b函式的顯式原型物件在a物件的原型鏈上, 返回true, 否則返回false

function foo() 

var f1 = new foo()

console.log(f1 instanceof foo) // true

console.log(f1 instanceof object) // true

案例一的解題圖如下

function object() {} 或 object = new function();

//object():是例項 a function()是建構函式b

console.log(object instanceof function) // true

//object():是例項 a object()是建構函式b,即object()是a又是b

console.log(object instanceof object) // true

//function():是例項 a function()是建構函式b,即function()是a又是b

console.log(function instanceof function) // true

//function():是例項 a object()是建構函式b

console.log(function instanceof object) // true

function foo() {}

//object():是例項 a foo()是建構函式b

console.log(object instanceof foo) // false

console.log(object instanceof function) // true講解如下圖

console.log(object instanceof object) // true講解如下圖

console.log(function instanceof function) // true講解如下圖

console.log(function instanceof object) // true講解如下圖

console.log(object instanceof foo) // false講解如下圖

例項物件的隱式原型屬性對應該例項物件的建構函式的顯示原型屬性

函式function()的原型物件預設是乙個空的object例項

所有函式的原型物件,它預設都是object建構函式的例項

大寫function是通過new function()產生的,而new function()產生的所有例項的隱式原型屬性都指向同乙個空object物件的例項,new function()自身建立這個建構函式的時候就建立了乙個乙個空object物件的例項,這才導致所有的函式的隱式原型屬性都指向同乙個空object物件的例項。

在js中 typeof和instanceof的區別

typeof與instanceof都是用來判斷資料型別的,返回值是否為空等情況,但是他們具體的情況該如何區分?1.首先兩者返回的值不同。typeof返回的值是乙個字串,而,instanceof返回的是布林型別的值,判斷是true或者false。typeof返回的型別有 number,boolean,...

js 高階回顧js

1 js高階 什麼是面向過程的程式設計?比如輪播圖 我們第一件事情幹嘛 第二件事情幹嘛。什麼是物件導向的程式設計?比如輪播圖 先是分析裡面有哪些物件,再是分析如何實現物件的功能 成員 什麼是面向函式的程式設計?功能封裝,函式重複呼叫。要從面向過程的思路轉換成物件導向的程式設計 比較難的過程 2 js...

js 高階知識

1 caller 表示呼叫該函式的函式 function fun1 function fun2 fun2 11,22 11 2 function foo var foo new foo var p foo.prototype foo.prototype alert foo.constructor a...