有人可以解释这个功能吗?
function b(a) {
return "[object Function]" == Object.prototype.toString.call(a)
}
和
function c(a) {
return "[object Array]" == Object.prototype.toString.call(a)
}
答案 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
方法