_.isElement(value)
134
_.isElement(value)
_.isElement检测一个值是否类似于一个DOM元素
参数
value (*): 需要检查的值
返回值
(boolean): 如果是DOM对象返回true,否则false
例子
_.isElement(document.body); // => true _.isElement('<body>'); // => false
源代码
import isObjectLike from './isObjectLike.js' import isPlainObject from './isPlainObject.js' /** * Checks if `value` is likely a DOM element. * * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. * @example * * isElement(document.body) * // => true * * isElement('<body>') * // => false */ //检测一个值是否类似于一个DOM元素 function isElement(value) { return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value) //判断value是一个object-like对象 并且它的nodeType属性等于1 并且value不是js原生对象 } export default isElement
isPlainObject
import baseGetTag from './.internal/baseGetTag.js' import isObjectLike from './isObjectLike.js' /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. * * @since 0.8.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { * this.a = 1 * } * * isPlainObject(new Foo) * // => false * * isPlainObject([1, 2, 3]) * // => false * * isPlainObject({ 'x': 0, 'y': 0 }) * // => true * * isPlainObject(Object.create(null)) * // => true */ //判断一个值是否是一个js原生对象,即使用Object构造函数创建的对象 或者 拥有[[Prototype]]属性为null的对象 function isPlainObject(value) { if (!isObjectLike(value) || baseGetTag(value) != '[object Object]') { //如果value不是object-like对象或者toStringTag不是[object Object]返回false return false } if (Object.getPrototypeOf(value) === null) {//如果value的原型为null返回true return true } let proto = value while (Object.getPrototypeOf(proto) !== null) {//循环一直获取value的原型的原型,一直获取到原型是null的那个对象 proto = Object.getPrototypeOf(proto) } return Object.getPrototypeOf(value) === proto//判断value的原型对象是否和原型是null的原型对象是否是同一个对象 } export default isPlainObject

浙公网安备 33010602011771号