JavaScript是一门最易让人误解的语言,该语言中精华与糟粕并存(可能比一般语言的这个比例要大一些);但“千淘万漉虽辛苦,吹尽黄沙始到金”,层层面纱下是易用灵活、优雅轻灵的内在。很久以前,JavaScript被当做是玩具语言,直到AJAX的出现,直到V8引擎的易用;这种局面已经改变。

JavaScript诞生于1995年(那时我还很小);一个叫Brendan Eich的人设计了这种语言。他就职于Netscape公司,他说服了老总要开发这种语言。然而仅用了10天,10天。这门语言最初是用于解决服务器端语言(Perl等)要处理的表单验证操作。为什么呢?在通过“猫”(modem)拨号上网的年代,网速只有28.8kbit/s啊。你填一个表格之类的若填错了或填写的没填,你提交数据就只有等着吧,等了半天啥也干不了;可能最悲催的是你可能受到一个通知,你填的不对啊(心里一万匹草泥马奔过)。这里可见在客户端能验证一下多有用了吧。

JavaScript与Java的关系如同“雷锋”与“雷峰塔”。要说有关系,那就是炒作关系。当年Netscape与Sun(Sun与Java关系那叫一个紧密)何种开发了JavaScript,当时Java正炒得热,那就将其命名为JavaScript吧。JavaScript从诞生就迅速被接受,没有经过实验室的严格测试,加之完成的时间短,语言本身问题很多。1996年,NN4 中推出了JS1.1版本,而IE3虽有VBScript,但支持了JScript(但是逆向的JS1.0)。因为没有事实的标准,这二者之间很多地方并不一致。1997年,一个基于JS1.1的方案提交给了ECMA,ECMA让TC#39负责实现一种供应商中立、通用、跨平台的脚本语言的语法、语义。TC#39给了ECMA-262标准(针对ECMAScript)。1998,ISO/IEC接受了这个标准。

ECMAScript未定义语言的I/O,故可以以它为核心扩展。JavaScript只是其中一种,还用Adobe ActionScript等等,服务器端还有Node。JavaScript包括:ECMAScript、DOM、BOM。

那ECMAScript定义了哪些内容呢?语法、语句、类型、关键字、保留字、对象、操作符。ECMAScript对其兼容性做了定义:1、要支持Unicode(支持多语言开发)2、支持定义的类型、值、对象、属性、函数、句法的等 3、可以扩展未定义的类型、值、对象、属性、函数、句法等 4、支持对未定义的正则表达式、程序的支持。还是比较开放的。就对其支持而言,JS1.1及JS1.2都不完全支持ECMAScript 1;JS1.3是第一个完全支持的。IE3申称支持,但实际上也并非如此吧!JS1.4也仅仅支持服务器端,NN的继承者Firefox开始于版本号JS1.5。通常,以对ECMAScript及DOM的支持来衡量浏览器的兼容性,因为命名规则混乱。

ECMASript已有6版了,第一版在JS1.1基础上支持Unicode,支持与平台无关的对象。第二版为与ISO/IEC一致仅仅做了一些编辑工作。第三版新增:对字符串的处理、正则表达式、新的控制语句、try-catch语句、错误类型、数值输出。第四版由于与第三版差距太大而放弃;以以下面一个3.1方案代替(ECMAScript 5).第五版支持原生JSON对象、“继承”以及高级属性;包含一个严格模式(对引擎解释执行代码进行补充)。

DOM(文档对象模型,发布于1998年):针对于XML并扩展到HTML通用的、跨平台的API。它将文档结构映射为多层次的结构。DOM的出现时为了应对IE以及当年NN的一家独大。它们搞了DHTML的概念,但是实现起来却各不相同。这样要想跨平台就要编写多个文档了。但实际上DOM也并不清晰。目前DOM分为三级,DOM0级指的是历史概念表示当时对DHTML的各自支持。

1.DOM level1:含Core(实现XML文档映射)、HTML(基于Core的扩展,添加了对象、方法)。

2.DOM level2:Core扩展对命名空间支持,添加Views、Events、Style、Range and Traversal模块。

3.DOM level3:Core支持XML1.0(支持XML infoset、XML Xpath、XML Base),加入了Load and Save、Validation模块。

其他语言还支持SVG、MathXML、SMIL。IE5开始着手支持DOM,但是IE5.5才完全支持;IE6、7在吃老本;IE8修复了bug,IE8第一个着手支持ECMASript5,IE9已经完全支持了(微软还是有进步)。

BOM(浏览器对象模型)

BOM只是支持对框架、窗口的操作;但把其他一些针对浏览器的操作也算在里面了,比如:

1、弹出新窗口;2、移动、关闭、缩放窗口;3、对cookie的支持;4、支持navigator对象;5、支持screen对象;6、支持location;7、自定义的XMLHttpRequest和ActiveXObject。

最初的BOM与浏览器紧密关联,不同的浏览器有不同的实现。HTML5才对其做出了规范。(完)

JavaScript的一点简介(注:本文诸多观点源于JavaScript高级程序设计,如有侵权,立即删除)的更多相关文章

  1. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  2. 转:JavaScript事件冒泡简介及应用

    (本文转载自别处) JavaScript事件冒泡简介及应用   一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理 ...

  3. 学习javascript 的一点感想

    原文:学习javascript 的一点感想 //动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例:var obj=ne ...

  4. JavaScript——历史与简介

    上一篇博文距离现在已经四个月了,一直想写些什么无奈工作比较忙碌.我的恩师老王在毕业聚餐那天带着一声酒气告诉我一定要把博客坚持写下去,所以今天下决心要开始这个新的篇章. 之所以想要从头写一个关于Java ...

  5. JavaScript 设计模式之简介

    一.设计模式概念解读 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.无数实战代码设计经验的总结.使用设计模式是为了让系统代码可重用.可扩展.可解耦.更容易被人 ...

  6. Javascript Proxy对象 简介

    Javascript Proxy对象 简介 Javascript Proxy对象 改变你操作对象的方式 Proxies 是Javasript对象的中间件 ...或者说至少是那种很早的版本. ES6 中 ...

  7. 《JavaScript高级程序设计》读书笔记--(1)JavaScript简介

    概述 JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HT ...

  8. javascript的一点学习

    最近用vue.js用的很爽,在全栈开发的路上一路狂奔,发现后台跟前台一起确实更有意义. 记录一个比较有意思的bug: 目标是对一个全局的paramList进行json格式化显示.代码借鉴了 http: ...

  9. JavaScript快速入门-简介

    一.JavaScript历史(摘自w3school) JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互 ...

随机推荐

  1. OC基础14:使用文件

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.对于NSFileManager类,文件 ...

  2. Xcode8 注释快捷键无效, 解决方案

    这个是因为苹果解决xcode ghost.把插件屏蔽了.解决方法命令运行: sudo /usr/libexec/xpccachectl 然后必须重启电脑后生效    

  3. 深信服笔试题(网络project师售后)

    总共同拥有3到大题, 1选择 主要有ip地址计算.http协议.vrrp协议. 2.主要是linux填空题 a.linux显示全部系统载入模块____ b.写出linux的两个开机启动程序___.__ ...

  4. Nodejs随笔(三):全局对象之global

    首先,进入node REPL: mesogene@mesogene-team:~$ node > 查看global对象,发现其他全局对象(包括Buffer.require对象)以及全局方法都包含 ...

  5. c#中的数据类型简介(数组)

    c#中的数据类型简介(数组) 数组定义 可以将数组看成相同数据类型的一组或多组数据,包括一维数组,多维数组和交错数组. 数值数组元素的默认值设置为零,而引用元素的默认值设置为 null. 交错数组是指 ...

  6. An error has occurred,See error log for more details

    解决Eclipse3.2配合MyEclipse5.0M2使用时打开JSP发生“An error has occurred,See error log for more details”错误的解决方法 ...

  7. jquery easyui filebox 上传附件 + asp.net后台

    form必须加这个属性enctype="multipart/form-data",否则后台获取不到文件 <script> function uploadFiles() ...

  8. 判断是否联网_检测网络的类型为3G、2G、wap、wifi

    判断是否联网_检测网络的类型为3G.2G.wap.wifi  判断是否联网: /*** * judge Internet is available * * @author wei-spring * @ ...

  9. zmud中文版_汉化补丁_汉化文件ZMUD破解

    ZMUD721中文版 http://pan.baidu.com/s/1mixwIoC

  10. JavaScript学习笔记(一)对象和属性

    对象属性的使用 JavaScript中的所有变量都可以当做对象使用,除了null和undefined. false.toString(); // 'false' [1, 2, 3].toString( ...