DOM,javascript,Web API之间的关系——onclick 引起的思考与调研

平时习惯了用js操作dom树,进而影响页面交互,基本都是通过web API接口实现的,最近看闭包和原生js的知识点比较多,昨天无意中看到了onclick中的this指向问题,遂用native js方式模拟了onclick再html标签里的this和js事件里的this,详见上一篇博客:XXX

下文中的js均为javaScript的缩写。

模拟完之后突然好奇,原生的web API中的onclick是怎么实现的呢?难道是也是跟我一样扩展了HTMLElement的原型对象?很显然不是,因为我觉得用js操作DOM的Web API是浏览器提供给js客户端程序的,浏览器自己本身没必要基于js进行编程和扩展,因为效率太低(js是解释型语言),于是就引发了对浏览器底层实现的思考。为此问了一些周边做web的同学,但大部分人也都是至于应用,至于底层没想过那么多,那只能自己上MDN从最基础的知识点看起。

看了DOM,js,Web API相关章节,不断思考和验证,目前大概是对这几者之间的关系有了一定层次的理解,如果有路过的大神发现发现了不正确的地方,请不吝指正哦~

首先DOM从按个人理解高度抽象的话,有两层含义:DOM规范,和我们通常是或的DOM对象

DOM:

DOM规范:由w3c定制的DOM标准,这个也是衍生了好多版本,包括Core DOM,XML DOM,HTML DOM等等,不同的平台、语言(如不同的浏览器、java、vbScript等)

DOM规范去开发自己的底层实现,所谓的“DOM独立于语言”,就是因为大家用了同一套标准,用户再按照这套标准去操作DOM的时候,感觉“毫无障碍”。

DOM对象:本质上由不同平台、语言运行是产生的内存对象,如java可以用解释工具将一个XML或者HTML解释为内存中的一个DOM对象,并按规范对外暴露了DOM的操作接口,如:

var el = document.getElementById( 'testInput' );
el.setAttribute("type","button");

Web API:

Web API是浏览器暴露给js客户端,用于操作DOM和其他一些网络操作的接口,下面提到的Web API主要指DOM这块的内容,因为按照之前的理解DOM是独立于语言的,那为什么针对内置DOM接口的一些扩展全是用的js的语法,HTMLElement这个原型接口,用户完全可以按照js的语法对其进行扩展,参考我上一篇博客:XXX那这看起来根本就是针对js开发的接口啊,对此继续

猜你喜欢

转载自www.cnblogs.com/surfer/p/9724933.html