学习 javascript (一)javascript 简介
javascript 从一个简单的输入验证器发展成为一门强大的编程语言。
历史
以前我们输入一个表单,点击完提交后,服务器发送反馈给我们。比如填写姓名的时候,我们在前端不能限定人们只能输入汉字,需要服务器告诉我们:你丫错了,又输入数字了!!
Netscape 公司决定着手开发一种客户端语言,用来处理简单的验证,命名为 livescript, 后来发展成为我们的 javascript 。
那么为什么叫 javascript ? 而不叫“张三script”、“李四script”, 导致现在有的人还以为 javescript 是 java 的小弟。请看下面分解:
在 1995 年 Sun 公司将 Oak 语言改名为 Java ,正式向市场推出。 Sun 公司大肆宣传,许诺这种语言可以"一次编写,到处运行"( Write Once , Run Anywhere ),它看上去很可能成为未来的主宰。历史证明,到现在 java 只是处于重要的位置,编程语言百家争鸣。
总之, java 当时火得一塌糊涂,Netscape 公司内部的高管一个个像着魔一样,相信 Java 是世界上最好的语言。于是,让 livescript 改名为 javascript,有点像今天的蹭热点。
后来 javascript 发展成三个不同的版本: NetScape Navigator 中的 Javascript、Internet Explorer 中的 Jscript 以及 ScriptEase 中的 CEnvi。三足鼎立的局面缺乏标准,随着业界不断的前进,它们之间的矛盾日益加剧,急需标准化。
1997 年,有个协会叫做欧洲计算机制造商协会(ECMA,European Computer Manufacturers Association)接受了 Javascript 1.1 版本的建议,然后这个协会指定第 39 号技术委员会(TC39, Technical Committee #39)负责将 Javascript 标准化。
标准化关乎各个公司的利益,所以这个 39 号技术委员会的成员不外乎这几个主要公司的人:Netscape、Sun、微软、Borland 以及其他关心脚本语言的几个公司。
经过数月的讨论和修改,终于完成了代号为 “ECMA-262”的新脚本语言——ECMAScript。第二年,ISO/IEC 也采用了这个标准,ISO 被大家所熟知,就是国家标准化组织(International Standardization Organization),而 IEC 指的是国际电工技术委员会(International Electrotechnical Commission) 。
从此,世界各地的浏览器开发上都在这个标准的基础上做文章。目前,javascript 这个名称还在用, ECMAScript 则更多出现在标准化文件上,比如 ES6 表示的就是国际标准中的 ECMAScript 6, 它于 2015 年通过。
实现
Javascript 的实现需要三个部分组成:分别是 ECMAScript(核心)、DOM(Document Object Model,文档对象模型)、BOM(Browser Object Model,浏览器对象模型)。
在厘清他们之间关系之前,我们需要明白的是:
- ECMAScript 和 Web 浏览器没有任何依赖关系,Web 浏览器仅仅是实现 ECMAscript 的宿主环境之一,其他环境还有 Node (服务端)、Adnode Flash。
- DOM 是 W3C 的标准(所有浏览器公共遵守的标准),提供了访问和操作网页内容的方法和接口。
- BOM 是各个浏览器厂商根据 DOM 在各自浏览器上的实现,提供了与浏览器交互的方法和接口。
- window 是 BOM 对象,而非 JavaScript 对象,不过恰好为 EMCAScript 中所定义的 Global 对象。
ECMAScript 可以操作 BOM 中的 window 对象,而 window 对象中包含了 document (DOM 的根节点), 那么 ECMAScript 就可以间接地操作 DOM。从而,ECMAScript 可以操作浏览器本身以及浏览器读取到的文档结构。
由于每个公司的浏览器对 ECMAScript 的兼容,以及对BOM 、DOM 的支持程度不同,很多语法特性、接口兼容程度不尽相同。所以,前端工程师面临着巨大的兼容性挑战,这里给出一个可以查看各个浏览器兼容情况的工具 canIuse,可以查询 CSS、HTML、JS、JS API 等等在各个浏览器上的兼容情况。
欢迎大家关注微信公众号:可视化技术( visteacher )
不仅有前端和可视化,还有算法、源码分析、书籍相送
个人网站:KurryLuo's Website
各个分享平台的 KurryLuo 都是在下。
用心学习,认真生活,努力工作!
学习 javascript (一)javascript 简介的更多相关文章
- 【学习笔记】JavaScript的基础学习
[学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...
- Javascript学习笔记1 javascript的特点
..对于网页而言,Javascript无处不在,对于英语不好的人它简直是噩梦般的存在,但形式所逼,今天开始着手学习!希望自己能坚持下去.从什么地方着手,我的目标是从大处着眼,从应用着眼,不抠细节,反正 ...
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- 转:JavaScript事件冒泡简介及应用
(本文转载自别处) JavaScript事件冒泡简介及应用 一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理 ...
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- seaJs学习笔记之javascript的依赖问题
之前分别为大家介绍了有关javascript中的冲突和性能问题,今天为大家介绍一下有关javascript中的依赖问题.我们将继续就之前javascript中性能问题继续介绍. 先来回顾一下性能问题的 ...
- JavaScript介绍-javaScript学习之旅(一)
javaScript简介 1.javaScript是互联网上最流行的脚本语言,这门可用于web和html,更可广泛用于服务器端,pc端,移动端. 2.javaScript脚本语言: javaScrip ...
- 转 利用 Console 来学习、调试JavaScript
利用 Console 来学习.调试JavaScript 一 什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console 对象 ...
- 学习笔记:Javascript 变量 包装对象
学习笔记:Javascript 变量 包装对象 如下代码,可以输出字符的长度. var str = "Tony"; str.length; 这时再试试以下代码,返回是 undefi ...
- JavaScript学习(1)之JavaScript基础
JavaScript学习(1)之JavaScript基础 由于工作原因,开发语言逐渐以JavaScript为主,所以,抽空学习了下JavaScript语法.等现阶段的工作稳定之后,陆续会分享下自己在学 ...
随机推荐
- ArcEngine小问题解决
最近开始使用VS2012,在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示. 找到解决方案:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为F ...
- Django rest framework(6)----序列化
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- scrapy安装过程问题解决、新建项目、调试断点
一.安装问题 1. 下载速度太慢 使用国外源,下载速度很慢,可以考虑使用豆瓣的镜像下载 pip install -i https://pypi.douban.com/simple/ scrapy 2. ...
- vue组件的生命周期
先来张组件生命周期的示意图: 文档里是这样描述的:你不需要立马弄明白所有的东西,不过以后它会有帮助.传送门. Vue2.0的生命周期钩子一共有10个,同样结合官方文档作出了下表 生命周期钩子 详细 b ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用FairyGUI (二)
上次讲解了FairyGUI的最简单的热更新办法,并对其中一个Demo进行了修改并做成了热更新的方式. 这次我们来一个更加复杂一些的情况:Emoji. FairyGUI的 Example 04 - ...
- java客户端调用webService
啥也不想说,以前使用的方法突然不行了.各种网搜(记得别忘记到jar包哦:axis.jar) 看代码,第一种方式,也就是以前的方式: 改方式不用表名参数名称 public static String i ...
- Shell脚本中获取select值
最近做一个数据清理,根据行号清理,所以需要查出这个行的最大最小值出来进行删除,如果靠手动每次去查,太麻烦所以就用在sh脚本当中执行SELECT语句,并将结果赋值给一个变量. sh脚本如下 #! /bi ...
- getopts的使用
getopts的使用 语法格式:getopts [option[:]] [DESCPRITION] VARIABLE option:表示为某个脚本可以使用的选项 ":":如果某个选 ...
- Web测试——翻页功能测试用例
参考:https://wenku.baidu.com/view/e6462707de80d4d8d15a4f1e.html?rec_flag=default&mark_pay_doc=2&am ...
- mock打桩之EasyMock
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代 ...