有一定 Js 基础的应该知道,Js 是带有一些自身的东西的,
就是与生俱来的,比如一些:
内置函数——Object、Array、Boolean、String、Number等
内置对象——Math、JSON、Date等
但是,如果仅仅是用这些东西,编写网页是办不到的。
而要在不同的环境中运行,就要有个标准,
JS遵循 ECMA 262 语法基础,JS - Web - API 则遵循 W3C 标准。
-
常说的Js(浏览器执行的Js),其实包含两部分:
① Js 基础知识 (ECMA262 标准)(也就说 Js 的语法格式和一些规定)
② Js - Web - API(W3C标准)(DOM操作之类的规定)不是针对浏览器中运行的,比如 node.js,针对服务器的 Js
自然就不需要 Js - Web - API 和符合 W3C 标准了,
因为它根本没有 window、document 等东西。 -
浏览器作为 Js 的执行者,
为了能够更好的去执行浏览器的功能,
它为 Js 内置一些东西,方便运行,这是很自然的事了。
当然,这些内置的东西,也是遵循上面的标准的。
举两个栗子:-
页面弹框 window.alert (123),一般我们只写 alert (123)
这时浏览器就会定义一个 window 全局变量,是一个对象,
并给它一个属性 alert (符合对象任意扩展属性的规则)
属性值是函数,所以,执行alert (123),就相当于运行了一个函数。 -
获取元素 document.getElementById (id) 时,
浏览器定义一个 document 全局变量, 对象类型,
给它定义一个 getElementById 属性,属性值是一个函数,同上。
上面的这些例子中,都语法都符合 Js 的标准。
-
页面弹框 window.alert (123),一般我们只写 alert (123)
-
W3C 标准中与 Js 配合的规定有:
- DOM操作(添加删除节点)
- BOM操作(获取屏幕尺寸)
- 事件绑定(点击事件,输入事件)
- ajax请求(包括 http 协议)
- 存储
-
但是需要注意的是
W3C 标准没有规定任何 Js 基础相关的东西,
也不管什么变量类型、原型、作用域和异步等,
只管定义用于浏览器中 Js 操作页面的 API 和全局变量。
说到底,
API 就是程序接口,让外部的东西通过这个接口,
来使用内部的一些信息和功能。
也就是说,Js 通过这些 API ,
来获取网页(浏览器?)的一些信息和功能。
Wait me back