object函数和对象Array - Object.prototype.toString.call

时间:2016-10-15 13:55:33

标签: javascript

有人可以解释这个功能吗?

 function b(a) {
    return "[object Function]" == Object.prototype.toString.call(a)
}

function c(a) {
    return "[object Array]" == Object.prototype.toString.call(a)
}

2 个答案:

答案 0 :(得分:2)

您正在从sortme借用方法toString,以确定您传递给任一函数的值是Object.prototype构造函数的实例还是{{1构造函数。

直接从对象原型中使用Function将覆盖Array.prototype上的Array和具有不同行为的Function.prototype。



toString




答案 1 :(得分:1)

当您在某个功能上调用toString时,它会返回[object Function] 当您在数组上调用toString时,它会返回[object Array]

第一个函数检查传入的内容是否为函数

function b(a) {
    return "[object Function]" == Object.prototype.toString.call(a)
}

var x = b('s'); // false
var y = b(function() {}); // true

console.log(x, y)

第二个检查传入的内容是否为数组

function c(a) {
    return "[object Array]" == Object.prototype.toString.call(a)
}

var x = c('s'); // false
var y = c([1,2,3]); // true

console.log(x, y)

由于始终使用Object.prototype.toString,因此可以通过这种方式检查字符串和数字,因为它不仅仅调用值toString方法