上一篇简单介绍了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. sql server 简单语句整合

    1.去重distinct , group by select distinct userid,username from 表名 select userid,username from 表名 group ...

  2. angular 输入属性

    import { Component, OnInit, Input } from '@angular/core'; @Component({ selector: 'app-order', templa ...

  3. 新建项目下的web文件夹下的dynamic web project和static web project和web fragment project的区别

    dynamic web project是Eclipse的项目,与其对应的有static web project,前者指动态web项目,包含一些动态代码,如java:而static web projec ...

  4. Mybatis中的多表查询 多对一,一对多

    示例:用户和账户 一个用户可以有多个账户 一个账户只能属于一个用户(多个账户也可以属于同一个用户) 步骤: 1.建立两张表:用户表,账户表 让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中 ...

  5. 【spring】 SpringMVC返回json数据的三种方式

    配置方法一 **1.导入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar. 2.spring配置文件添加** & ...

  6. postman提取返回值和断言

    将token接口中返回的access_token设置为全局变量. 如:token接口返回格式为: { "data": { "access_token": &qu ...

  7. 使用原生实现jquery中的css方法

    由于jquery放在mobile页面上,有时候还是显得有点大,所以今天尝试使用原生来开发,但是习惯了jquery之后,转用原生开发之后,发现原生中,找不到可以替代jquery的css方法,于是对原生的 ...

  8. 条目六《当心C++编译器中最烦人的分析机制》

    当心C++编译器中最烦人的分析机制 C++是较为底层的面相对象语言,在底层的语法规则分析中,有很多隐藏的分析机制. C++中的普遍规律相符,即尽可能地解释为函数声明. 把形式参数的声明用括号括起来是非 ...

  9. 收藏的一些有意思的CSS加载样式

    先看下效果 全部代码贴出,自己粘贴调试测试: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  10. NAND NOR Flash 和MTD

    来自:http://blog.sina.com.cn/s/blog_6b489d5e0102xm62.html 一.NAND和NOR Flash 一般来说,快闪记忆体可分为两大规格,一个是NAND, ...