【问题标题】:How to differentiate between DOM object and JavaScript object如何区分 DOM 对象和 JavaScript 对象
【发布时间】:2013-12-11 18:24:53
【问题描述】:

我试图找出哪个是 dom 对象或哪个是 javascript 对象

var domObj =document.getElementById('lga');

typeof domObj

"object"

var jsObj = {name:"BP"}

typeof jsObj

"object"

那我如何识别哪个是dom对象或js对象。

【问题讨论】:

  • DOM 对象 javascript 对象,如果通过 javascript 访问它们。
  • 所以你真正想知道的是“某个对象是 DOM 对象还是不是 DOM 对象?”
  • jQuery 只做else if ( selector.nodeType )。当然,如果普通对象具有这样的属性,您将得到误报。

标签: javascript jquery dom


【解决方案1】:

你可以使用

domObj instanceof HTMLElement; // true

这将是错误的

jsObj instanceof HTMLElement; // false

if 中看起来像这样

if (domObj instanceof HTMLElement) {
  // ...
}
else {
  // ...
}

您可以通过检查对象的constructor 属性来了解有关对象的更多信息

document.body.constructor; // function HTMLBodyElement() { [native code] }

【讨论】:

  • 好主意。如果您也对 TextNodes、CommentNodes 等感兴趣,可以将其与 HTMLElement 进行比较。
  • domObj instanceof HTMLElement;这在 Chrome 中可以正常工作,但在 IE8、domObj instanceof Object 中不行;这在 Chrome 中返回 true,但在 IE8 中返回 false。有什么具体的方法可以跨浏览器吗?
【解决方案2】:

我认为这应该会有所帮助 Javascript isDOM - How do you check if a Javascript Object is a DOM Object

这提供了一种跨浏览器的方式来处理需求,同时解释了常见浏览器的底层实现。
我认为这应该回答你关于如何识别HTMLElement 类型的object 的问题。

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 2011-08-18
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2011-06-11
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多