上一篇简单介绍了Web三要素中的层叠样式表,本篇主要介绍三要素中最后一个,也是最难掌握的一个-----JavaScript。

JavaScript

老规矩不能破,先简要交代 JavaScript 的历史。

我们知道,在Web诞生之初是没有JavaScript的,网页只是简单的文本。随着Web的发展和逐渐成熟,人们对Web的诉求越来越多,网页的大小和复杂性在不断的增加。在那个网速普遍只有一二十K的年代,用户填完一张表单之后提交到服务端,然后等待几十秒,才能获得服务端返回的验证信息。如果用户的输入有误,那就要不停的重复这个过程。对于用户来说,这是一个痛苦的折磨。于是人们对于表单本地校验的诉求越来越强烈,进而催生了JavaScript语言。
有趣的是,最初NetScape(网景)公司在开发JavaScript语言的时候(JavaScript诞生于1995年),并没有将其命名为JavaScript,而是叫做LiveScript。在NetScape Navigator 2发布前期,为了搭上当时被媒体热炒的Java语言的顺风车,NetScape公司临时将LiveScript改名为JavaScript。所以,实际上JavaScript与Java语言没有任何实质的关系。
由于Web的持续发展,用户关注度越来越高,微软公司也加大了对IE浏览器的投入。不久就在IE3中加入了JavaScript的实现,只不过叫做JScript而已。了解Web发展历史(参阅Web简史)的都知道,这个时期正处于第一次浏览器大战时期,各家都在拼命抢占市场份额。因此对于JavaScript,难免各个厂家都会加入不同的实现和特性,最明显的例子就是JavaScript和JScript两个版本并驾齐驱,缺乏一个统一的标准。
随着业界对这个问题的担心日益加剧,终于在1997年,通过NetScape、Sun、微软等公司的程序员的努力,终于完成了ECMA-262标准的制定。ECMA-262定义了一种叫做ECMAScript的新的脚本语言的标准。随后,各个浏览器厂商以ECMAScript作为各自JavaScript实现的基础,也就是说,目前我们使用的JavaScript,都是ECMAScript的一种具体实现。

通常我们把JavaScript就当成是ECMAScript,但实际上JavaScript比ECMA-262规定的要多得多。一个完整的JavaScript实现要包含下面三个组成部分。

  1. 核心(ECMAScript)
  2. 文档对象模型(DOM)
  3. 浏览器对象模型(BOM)

其中,ECMAScript就是我们通常认为的JavaScript语言,包括语法、类型语句、关键字、保留字、操作符、对象等基本的语言要素。
文档对象模型(Document Object Model),是针对XML但经过扩展用于HTML的API,既然是API,我们就可以通过DOM来操作文档。实际上,DOM把整个页面映射成一个多层节点机构,HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。这里要多问一句,为什么要有dom存在呢,直接操作html文档不可以么?其实早期就是这么做的,IE4和Netscape Navigator 4分别支持不同形式的DHTML(动态HTML),开发人员在此基础上,无需重新加载网页就已经可以修改网页的外观和内容了。那为什么后来又出现了DOM呢?这还是要联想到当时的历史情景,当时正好处于第一次浏览器大战,NetScape和微软在开发DHTML方面各持己见,导致了当时的两大阵营之间的严重不兼容。长久这样下去,对Web的发展是非常不利的,所以此时,W3C才站出来开始着手规划DOM。
我们在日常的开发过程中要用到很多与浏览器相关的对象,接触最多的一个对象想必就是window对象了,那么window对象是怎么来的呢,它其实属于浏览器对象模型(Browser Object Model)的一部分。我们知道,JavaScript运行在浏览器中(先不说Nodejs),如果要使用浏览器的功能,比如新开一个标签页,就必须通过BOM,这也是BOM产生的原因。BOM提供了很多的对象,用于访问浏览器的功能,除了window对象,还有location对象、navigator对象、screen对象、history对象等。在开发过程中,我们经常要使用到这些对象,所以熟练掌握这些对象是很有必要的。

小结

本篇主要介绍了JavaScript的诞生,并介绍了JavaScript的基本组成部分,从整体上了解了JavaScript这门语言。后面会从一些基本的语言点和日常开发中使用频率较高的知识点介绍JavaScript语言的基本知识。

(Frontend Newbie)Web三要素(三)的更多相关文章

  1. (Frontend Newbie) Web三要素(一)

    上一篇简单了解了Web发展的简要历史,本篇简单介绍前端开发的基本三要素:HTML.CSS.JavaScript中的HTML以及一些在开发.学习过程中易被忽视的知识点. HTML HTML全称是超文本标 ...

  2. 【小白学PyTorch】4 构建模型三要素与权重初始化

    文章目录: 目录 1 模型三要素 2 参数初始化 3 完整运行代码 4 尺寸计算与参数计算 1 模型三要素 三要素其实很简单 必须要继承nn.Module这个类,要让PyTorch知道这个类是一个Mo ...

  3. (Frontend Newbie)Web三要素(二)

    上一篇简单介绍了HTML的基本知识以及一些在开发学习过程中容易忽视的知识点,本篇介绍Web三要素中另一个重要组成部分----层叠样式表(Cascading Style Sheets). CSS 按照一 ...

  4. 移动web开发之屏幕三要素

    × 目录 [1]屏幕尺寸 [2]分辨率 [3]像素密度 前面的话 实际上,并没有人提过屏幕三要素这个词,仅是我关于移动web开发屏幕相关部分总结归纳的术语.屏幕三要素包括屏幕尺寸.屏幕分辨率和屏幕像素 ...

  5. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  6. 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...

  7. Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法

    转载:http://mp.weixin.qq.com/s/uWPls0qrqJKHkHfNLmaenQ 导语 Http 缓存机制作为 web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必 ...

  8. WebService基础学习(二)—三要素

    一.Java中WebService规范      JAVA 中共有三种WebService 规范,分别是JAX-WS.JAX-RS.JAXM&SAAJ(废弃).   1.JAX-WS规范    ...

  9. webService 三要素

    WebService(jax-ws)三要素 SOAP: 基于HTTP协议,采用XML格式,用来传递信息的格式. WSDL: 用来描述如何访问具体的服务.(相当于说明书) UDDI: 用户自己可以按UD ...

随机推荐

  1. LibreOJ 6279 数列分块入门 3(分块+排序)

    题解:自然是先分一波块,把同一个块中的所有数字压到一个vector中,将每一个vector进行排序.然后对于每一次区间加,不完整的块加好后暴力重构,完整的块直接修改标记.查询时不完整的块暴力找最接近x ...

  2. Extjs Ext.TreePanel

    TreePanel 简单实例. <link rel="stylesheet" href="Js/ext-4.2/resources/css/ext-all-nept ...

  3. Dapper ORM

    参考地址:https://www.cnblogs.com/lunawzh/p/6607116.html 1.连接语句 var conn = new SqlConnection(Configuratio ...

  4. html5 video微信浏览器视频不能自动播放

    html5 video微信浏览器视频不能自动播放 一.微信浏览器(x5内核): 1.不能自动播放 2.全屏 3.最顶层(z层的最顶层) 二.ios系统解决方案:(无phone手机未测试) <au ...

  5. Kubernetes 集群部署(3) -- Flannel 集群

    1. 下载包 wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64. ...

  6. 如何下载网页上的视频 并且 flv 格式转化成 MP4

    链接:http://www.jb51.net/softjc/222135.html https://jingyan.baidu.com/article/25648fc162f2899190fd0042 ...

  7. 特殊用途语言特性(默认实参/内联函数/constexpr函数/assert预处理宏/NDEBUG预处理变量)

    默认实参: 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参.调用含有默认实参的函数时,可以包含该实参,也可以省略该实参. 需要特别 ...

  8. samba服务器架设

    #samba服务器架设方便线上linux服务器和windows服务器之间共享 1.关闭防火墙service iptables stop 2.关闭SELinuxsetenforce 0 3.安装samb ...

  9. Python实例手册

    在电脑中突然发现一个这么好的资料,雪松大神制作,不敢独享,特与大家共享.连他的广告也一并复制了吧! python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 ...

  10. 月薪3万+的大数据人都在疯学Flink,为什么?

    身处大数据圈近5年了,在我的概念里一直认为大数据最牛的两个东西是Hadoop和Spark.18年下半年的时候,我突然发现身边很多大数据牛人都是研究学习Flink,甚至连Spark都大有被冷落抛弃的感觉 ...