We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第二百一十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import isObjectLike from './isObjectLike.js' import isPlainObject from './isPlainObject.js'
《lodash源码分析之isObjectLike》 《lodash源码分析之isPlainObject》
isElement 用来判断 value 是否为一个 Dom element 对象。
isElement
value
Dom element
function isElement(value) { return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value) }
首先判断 value 是否为类对象;再判断属性 nodeType 是否为 1 ,Dom Element 对象必定会有一个 nodeType 为 1 的属性;接着再排除纯对象,因为 Dom Element 必定会继承某类元素对象。例如 div 会继承 HTMLDivElement 。
nodeType
1
Dom Element
div
HTMLDivElement
可以看出,这段代码是不严谨的,例如:
function FakeElement () { this.nodeType = 1 } const fakeElement = new FakeElement() isElement(fakeElement) // => true
这个 issue 解释了这样做的原因。
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第二百一十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之isObjectLike》
《lodash源码分析之isPlainObject》
源码分析
isElement
用来判断value
是否为一个Dom element
对象。首先判断
value
是否为类对象;再判断属性nodeType
是否为1
,Dom Element
对象必定会有一个nodeType
为1
的属性;接着再排除纯对象,因为Dom Element
必定会继承某类元素对象。例如div
会继承HTMLDivElement
。可以看出,这段代码是不严谨的,例如:
这个 issue 解释了这样做的原因。
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: