判断是否为对象typeof abc == 'object' 与 instanceof 性能比较


发布者 ourjs  发布时间 1555041449637
关键字 JS学习  JavaScript 
我们通常使用 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"