什么是JavaScript
JavaScript创建的目的:
创建的最初目的是使网页更加生动。
脚本
这种编程语言写出来的程序被称为脚本,可以直接写在网页的HTML中,网页加载时自动执行。脚本被以纯文本的形式提供和执行,不需要特殊的准备和编译即可运行。如今,JavaScript不仅
引擎
JavaScript不仅可以在浏览器中执行,也可以在服务端执行,甚至可以在任意搭载JavaScript引擎的设备中执行。JavaScript引擎也称JavaScript虚拟机。
不同的浏览器有不同的引擎
- V8:Chrome、Opera、Edge
- SpiderMonkey:FireFox
- Chakra:IE
引擎是如何工作的
- 引擎读取脚本
- 引擎将脚本编译为机器码
- 机器码快速执行
浏览器中的JavaScript能做什么
现代JavaScript是一种安全的编程语言,它不提供对内存或CPU的底层访问,因为它最初是为浏览器而生,不需要这些功能。
JavaScript的能力很大程度上取决于它运行环境。例如,Node.js支持允许JavaScript读取或写入任意文件,执行网络请求函数。
浏览器的JavaScript可以做与网页操作、用户交互和web服务器相关的所有事情。
例如:
浏览器中JavaScript可以做下面这些事:
- 在网页中添加新的HTML,修改网页已有的内容和网页样式。
- 相应用户的行为,相应鼠标的点击,指针的移动,按键的按动。
- 向远程服务器发送网络请求,下载和上传文件(所谓的AJAX和COMET技术)。
- 获取和设置cookie,向访问者提出为问题或发送信息。
- 记住客户端的数据(本地存储)。
浏览器中的JavaScript不能做什么
为了用户的信息安全,在浏览器中的JavaScript的能力是受限的。目的就是防止恶意网页获取用户私人信息或损害用户数据。
此类受限包括以下:
- 网页中的JavaScript不能读、写、复制和执行硬盘上的任意文件。它没有直接访问操作系统的功能。
现代浏览器允许JavaScript做一些文件的相关操作,但是这个操作是受到限制的。仅当用户做出特殊行为时,JavaScript才能操作这个文件。例如,用户把文件拖放到浏览器中,或者通过标签选择了文件。
有很多与麦克风/相机和其他设备进行交互的方式,但是这些都需要获得用户的明确许可。因此,启动了JavaScript的网页应该不会偷偷地启动网络摄像头观察你,并把你的信息发送到美国国家安全局。 - 不同的标签页/窗口之间通常互不了解,有时候,也会有联系,例如一个标签页通过JavaScript打开的另外一个标签页。但即使在何种情况下,如果两个标签页打开的不是同一个网站(域名、协议或者端口任意不相同的网站),它们都不能互相通信。
这就是所谓的同源策略。为了解决同源策略问题,两个标签页必须都包含一些处理这个问题的特定JavaScript代码,并均允许数据交换。本教程会讲到这部分相关的知识。 - JavaScript可以轻松的通过互联网与当前页面所在的服务器进行通信。但是从其他网站/域的服务器中接收数据的能力被削弱了。尽管可以,但需要来自远程服务器的明确协议(在HTTP header中)。这也是为了用户的信息安全。
如果在浏览环境外(例如在服务器上)使用JavaScript,则不受此类限制。现代浏览器还允许安装可能会要求扩展权限的插件/扩展。
浙公网安备 33010602011771号