手撕Js中的instanceof 真的不要太簡單

2021-10-11 00:14:17 字數 1896 閱讀 1854

首先,在我們手撕instanceof的時候,我們先來看看他都有什麼用處?

let arr =

letfn

=functionfn(

)let obj =

let num =

2020

console.

log(arr instanceof

array

)//true

console.

log(arr instanceof

object

)//true

console.

log(arr instanceof

function

)//false

console.

log(arr instanceof

number

)//false

console.

log(fn instanceof

array

)//false

console.

log(fn instanceof

object

)//true

console.

log(fn instanceof

function

)//true

console.

log(fn instanceof

number

)//false

console.

log(obj instanceof

array

)//false

console.

log(obj instanceof

object

)//true

console.

log(obj instanceof

function

)//false

console.

log(obj instanceof

number

)//false

console.

log(num instanceof

array

)//false

console.

log(num instanceof

object

)//false

console.

log(num instanceof

function

)//fasle

console.

log(num instanceof

number

)//fasle

instanceof 運算子用於檢測建構函式的 prototype 屬性是否出現在某個例項物件的原型鏈上。 —mdn

上面這段話來自mdn,可以說是很形象了,檢測建構函式的原型是否出現在某個例項的原型鏈上,

i.e. & e.g.

instanceof 運算子用於檢測array.prototype屬性是否出現在 arr._proto.__proto…上

instanceof的原理

function

instance_of

(example, classfunc)

}var proto = example.__proto__,

prototype = classfunc.prototype

if( proto && prototype)

這種函式也沒有 prototype

while

(true)}

else

}instance_of([

], array)

// true

JS 手撕快速排序

我們都知道陣列的sort底層原理就是快速排序,那麼我們可以自己封裝乙個sort函式來更深層次的理解快速排序 看了阮一峰的部落格後發現他提供的思路更加的簡潔易懂 快速排序的重要之處就是基準數的選擇,通常我們選擇陣列中的第乙個元素作為基準數,可是這是乙個優選嗎?隨機基準數 固定的基準數和隨機基準數比較起...

在js中 typeof和instanceof的區別

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

手撕隨機森林的超引數

隨機森林有兩大隨機特點 1 random sampling of training data points when building trees 2 random subsets of features considered when splitting nodes from sklearn.en...