模擬實現instanceof的功能 js

2021-10-10 23:49:11 字數 1019 閱讀 3174

typeof是用來判斷資料型別的,就乙個引數 ,使用方式像這樣:typeof  num,就是判斷num是什麼型別

typeof 一般只能返回如下幾個結果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined";

著重看這幾個:

物件,陣列(都是引用型別) 使用typeof 結果是 object型別,但是null 是基本資料型別,使用typeof結果也是 object。

ps:如何準確判斷乙個變數是陣列?答:使用instanceof,eg.instanceof array//true(不能用typeof,因為typepf物件和陣列都會返回 'object')

instanceof 內部機制是通過原型鏈來實現的,所以可以用於判斷乙個變數是否屬於某個物件的例項。

**形式為obj1 instanceof obj2(obj1 是否是 obj2 的例項)

function foo() 

let foo = new foo()

console.log(foo instanceof foo) // true

手寫乙個函式來實現 instanceof 的功能:

function instanceofobj(a, b) 

if (prototypeb === protoa)

protoa = protoa.__proto__; //若本次查詢無結果,則沿著原型鏈向上查詢

}return state;

}console.log(instanceofobj(, array)); //true

列印結果為true,這是因為.__proto__指向的是array.prototype.

vector的模擬實現

上一節部落格講述了vector常見介面的使用,今天主要是對vector這些介面進行模擬實現,下面是相關 include include includeusing namespace std namespace ty iterator end citerator cbegin const citera...

list的模擬實現

list是stl標準模板庫中的乙個容器,它實質上是乙個帶頭雙向迴圈鍊錶。這樣的好處是 插入 刪除資料時,不用判斷鍊錶是否為空,並且遍歷的時候找尾也很容易,只需要用 head prev就能實現。迭代器的作用就是為了讓容器的訪問像指標一樣可以實現 解引用,以及過載 的比較符。迭代器有兩種實現方式 1.原...

bind的模擬實現

var context context window var result 判斷是否有第二個引數 if arguments 1 else delete context.fn return result var foo function bar name,age bind 方法會建立乙個新的函式。當這...