关键词

js判断一个对象是数组(函数)的方法实例

下面是关于“js判断一个对象是数组(函数)的方法实例”的完整攻略。

判断一个对象是数组的方法

在 JavaScript 中判断一个对象是否为数组的方法有很多种,下面介绍两种比较常用的方法。

方法一:使用 Array.isArray()

使用 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

使用 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

使用 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()

使用 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

展开阅读全文