判斷是否為物件typeof abc == 'object' 與 instanceof 效能比較
分類 JS學習 關鍵字 JavaScript 釋出 ourjs 1555041449637
注意 轉載須保留原文連結,譯文連結,作者譯者等資訊。
我們通常使用 typeof obj == 'object' 來判斷變數是否為物件。但也可通過 obj instanceof Object 來判斷,那麼二者的效能如何?
我們寫一個簡單的測試用例,分別試100萬次
var testTypeof = function(abc) {
if (typeof abc === 'object') {
abc = 0
}
}
var testEqual = function(abc) {
if (abc instanceof Object) {
abc = 0
}
}
var object = function ABC() {}
var count = 1000000
var date = Date.now()
for (var i = 0; i < count; i++) {
testTypeof()
}
console.log(Date.now() - date)
var date = Date.now()
for (var i = 0; i < count; i++) {
testEqual()
}
console.log(Date.now() - date)
測試結果:
$ node test.js
95
7
結果使用 instance 比 typeof 快近10倍
但使用 instance 與typeof 會有一些不同,比如在判斷function型別時:
Date instanceof Object
> true
typeof Date
> "function"