下面是关于“js判断一个对象是数组(函数)的方法实例”的完整攻略。
在 JavaScript 中判断一个对象是否为数组的方法有很多种,下面介绍两种比较常用的方法。
使用 Array.isArray()
可以判断一个对象是否为数组,同时可以避免使用 typeof 判断的弊端。
示例代码如下:
const arr = [1, 2, 3];
if (Array.isArray(arr)) {
console.log("arr is an array");
} else {
console.log("arr is not an array");
}
使用 instanceof
也可以判断一个对象是否为数组,但是在跨窗口(frame 或 iframe)的情况下,instanceof 的结果会出错,需要使用 window.top 或 window.parent 解决。
示例代码如下:
const arr = [1, 2, 3];
if (arr instanceof Array) {
console.log("arr is an array");
} else {
console.log("arr is not an array");
}
在 JavaScript 中判断一个对象是否为函数的方法同样有很多种,下面介绍两种比较常用的方法。
使用 typeof 可以判断一个对象是否为函数,但是存在问题,当一个 object 对象中具有 call 和 apply 方法的时候,也会被 typeof function 判断为函数。所以当需要判断一个对象是否为函数时,最好使用方法二中的方式。
示例代码如下:
function fn() {
console.log('this is a function');
}
if (typeof fn === 'function') {
console.log('fn is a function');
} else {
console.log('fn is not a function');
}
使用 Object.prototype.toString.call()
可以判断一个对象是否为函数。其中使用 call() 方法把 Object.prototype.toString 这个方法绑定到需要判断的对象上,然后使用 slice() 方法去掉返回值中的 "[object" 和 "]"。最后与 "Function" 相比较,返回判断结果。
示例代码如下:
function fn() {
console.log('this is a function');
}
if (Object.prototype.toString.call(fn).slice(8, -1) === 'Function') {
console.log('fn is a function');
} else {
console.log('fn is not a function');
}
以上是两种判断一个对象是否为数组(函数)的方法实例。希望能对你有所帮助。
本文链接:http://task.lmcjl.com/news/862.html