在js中,dom对象的属性和方法都是继承自哪里?

var dom = document.getElementById('domId');
dom.innerHTML = "hello world!";
console.log(typeof dom); //object
console.log(dom.hasOwnProperty("innerHTML")); //false
console.log(dom.__proto__.hasOwnProperty("innerHTML")); //false
阅读 3.4k
3 个回答

typeof只能大概识别出是object或者其他基本数据类型,不妨试试toString,看过一些框架js,查看对象类型都是通过toString对得到的结果做字符串处理得到类型名。

clipboard.png

clipboard.png

可以在mdn里查看相关内容,比如div的dom类型 https://developer.mozilla.org...

clipboard.png

可以看到它的主要继承关系。

比如innerHTML,其实在这里https://developer.mozilla.org...
Element类的属性

原型链上是 HTMLDivElement -> HTMLELement -> Element -> Node -> EventTarget
但innerHTML不能直接在他们上面使用,
图片描述

dom的innerHTML赋值/取值肯定不是在原型链上直接赋值/取值,估计是内部的一些方法来实现的,所以上面这一串.hasOwnProperty('innerHTML')都是false。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题