instanceof 用於判斷某個對象是不是另外一個對象(構造方法)的實例。instanceof會查找原型鏈,直到null若是還不是後面這個對象的實例的話就返回false,不然就返回true函數
1 function instanceofFunc(obj, cons) { 2 // 錯誤判斷 構造函數必須是一個function 其餘的均報錯 3 if (typeof cons !== 'function') throw new Error('instance error') 4 if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) return false 5 // 獲取到原型對象 6 let proto = cons.prototype 7 // 若是obj的原型對象不是null 8 while (obj.__proto__) { 9 if (obj.__proto__ === proto) return true 10 obj = obj.__proto__ 11 } 12 return false 13 } 14 15 console.log(instanceofFunc(() => {}, Function)) // true