_.isArrayBuffer(value)

128

_.isArrayBuffer(value)

_.isArrayBuffer检查一个值是否被分类为arrayBuffer对象

参数

value (*): 需要检查的值

返回值

(boolean): 如果是arrayBuffer返回true,否则false

例子

_.isArrayBuffer(new ArrayBuffer(2));
// => true
 
_.isArrayBuffer(new Array(2));
// => false

源代码

import baseGetTag from './.internal/baseGetTag.js'
import isObjectLike from './isObjectLike.js'
import nodeTypes from './.internal/nodeTypes.js'

/* Node.js helper references. */
//引用nodejs中的助手函数isArraybuffer
const nodeIsArrayBuffer = nodeTypes && nodeTypes.isArrayBuffer

/**
 * Checks if `value` is classified as an `ArrayBuffer` object.
 *
 * @since 4.3.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
 * @example
 *
 * isArrayBuffer(new ArrayBuffer(2))
 * // => true
 *
 * isArrayBuffer(new Array(2))
 * // => false
 */
//检查一个值是否被分类为arrayBuffer对象
const isArrayBuffer = nodeIsArrayBuffer
  ? (value) => nodeIsArrayBuffer(value)
  : (value) => isObjectLike(value) && baseGetTag(value) == '[object ArrayBuffer]'
  //如果可以获取到nodejs的助手函数就用nodejs的方法判断,否则判断是否是object-like对象并且toStringTag是[object ArrayBuffer]

export default isArrayBuffer
nodeTypes
import freeGlobal from './freeGlobal.js'

/** Detect free variable `exports`. */
//探测exports对象
const freeExports = typeof exports == 'object' && exports !== null && !exports.nodeType && exports

/** Detect free variable `module`. */
//探测module对象
const freeModule = freeExports && typeof module == 'object' && module !== null && !module.nodeType && module

/** Detect the popular CommonJS extension `module.exports`. */
//探测 commonjs扩展 module.exports 对象
const moduleExports = freeModule && freeModule.exports === freeExports

/** Detect free variable `process` from Node.js. */
//探测nodejs中的process对象
const freeProcess = moduleExports && freeGlobal.process

/** Used to access faster Node.js helpers. */
//用来获取更快的nodejs助手函数
const nodeTypes = ((() => {
  try {
    /* Detect public `util.types` helpers for Node.js v10+. */
    /* Node.js deprecation code: DEP0103. */
    //探测公共方法util.types在nodejs v10版本以上
    const typesHelper = freeModule && freeModule.require && freeModule.require('util').types
    return typesHelper
      ? typesHelper
      /* Legacy process.binding('util') for Node.js earlier than v10. */
      //nodejs v10版本以下的情况获取到util模块
      : freeProcess && freeProcess.binding && freeProcess.binding('util')
  } catch (e) {}
})())

export default nodeTypes
freeGlobal
/** Detect free variable `global` from Node.js. */
const freeGlobal = typeof global == 'object' && global !== null && global.Object === Object && global
//探测nodejs环境下的global对象
export default freeGlobal

 

posted @ 2018-12-19 10:37  hahazexia  阅读(571)  评论(0)    收藏  举报