📜  Lodash _.isBuffer() 方法(1)

📅  最后修改于: 2023-12-03 15:32:44.520000             🧑  作者: Mango

Lodash _.isBuffer() 方法

_.isBuffer(value) 方法是 Lodash 提供的对 Buffer 类型数据的判断方法,用于判断一个值是否为 Buffer 类型。

该方法返回一个布尔值,如果传入的参数是 Buffer 类型,则返回 true,否则返回 false。

语法
_.isBuffer(value)

参数

  1. value(任意类型): 需要判断的值。
返回值

(Boolean) 布尔值,如果参数是 Buffer 类型则返回 true,否则返回 false。

示例
const _ = require("lodash");

_.isBuffer(Buffer.from("Hello World")); // true
_.isBuffer("Hello World"); // false
_.isBuffer(""); // false
_.isBuffer({}); // false
实现原理

判断一个值是否为 Buffer 类型,可以使用 Buffer.isBuffer() 方法,如下示例所示:

Buffer.isBuffer(new Buffer("hello"));  // true
Buffer.isBuffer("hello");  // false
Buffer.isBuffer({});  // false

而 Lodash 实现的 _.isBuffer(value) 方法,实际上也是调用了 Buffer.isBuffer(value) 方法来判断传入的参数是否为 Buffer 类型。具体实现代码如下:

function isBuffer(value) {
  return value instanceof ArrayBuffer || (value && typeof value === 'object' && Object.prototype.toString.call(value) == '[object Uint8Array]') || false;
}

该方法首先判断参数是否为 ArrayBuffer 类型,如果是则返回 true。如果不是,会再次判断参数是否为 object 类型,如果是则调用 Object.prototype.toString() 方法返回类型信息,如果是 '[object Uint8Array]' ,则说明参数是 Uint8Array 类型,也就是 Buffer 类型,返回 true。如果都不是,则返回 false。

参考链接