JavaScript的一点简介(注:本文诸多观点源于JavaScript高级程序设计,如有侵权,立即删除)
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高级程序设计,如有侵权,立即删除)的更多相关文章
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 转:JavaScript事件冒泡简介及应用
(本文转载自别处) JavaScript事件冒泡简介及应用 一.什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理 ...
- 学习javascript 的一点感想
原文:学习javascript 的一点感想 //动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例:var obj=ne ...
- JavaScript——历史与简介
上一篇博文距离现在已经四个月了,一直想写些什么无奈工作比较忙碌.我的恩师老王在毕业聚餐那天带着一声酒气告诉我一定要把博客坚持写下去,所以今天下决心要开始这个新的篇章. 之所以想要从头写一个关于Java ...
- JavaScript 设计模式之简介
一.设计模式概念解读 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.无数实战代码设计经验的总结.使用设计模式是为了让系统代码可重用.可扩展.可解耦.更容易被人 ...
- Javascript Proxy对象 简介
Javascript Proxy对象 简介 Javascript Proxy对象 改变你操作对象的方式 Proxies 是Javasript对象的中间件 ...或者说至少是那种很早的版本. ES6 中 ...
- 《JavaScript高级程序设计》读书笔记--(1)JavaScript简介
概述 JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HT ...
- javascript的一点学习
最近用vue.js用的很爽,在全栈开发的路上一路狂奔,发现后台跟前台一起确实更有意义. 记录一个比较有意思的bug: 目标是对一个全局的paramList进行json格式化显示.代码借鉴了 http: ...
- JavaScript快速入门-简介
一.JavaScript历史(摘自w3school) JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互 ...
随机推荐
- hdu 2851(最短路)
点击打开链接 竟然是最短路!!!! 藏的好深啊 /* 求从路1走到路i的最小危险值, 给出n条路的起点和终点,当i,j两路有重合的,我们使map[i][j]=v[j]: 把路当作最短路中的点,如果有重 ...
- [AS3]as3用ByteArray来对SWF文件编码加密实例参考
[AS3]as3用ByteArray来对SWF文件编码加密实例参考,简单来说,就是将 swf 以 binary 的方式读入,并对 ByteArray 做些改变,再重新存成 swf 档.这个作业当然也可 ...
- ORACLE 主要后台进程1
Oracle Database Background Processes: 1.Database writer (DBWn)The database writer writes modified bl ...
- String常用方法总结
字符串的截取: 1. slice(start,end) 返回一个新的字符串,不会改变原来引用值.end省略的时候,截取的是start到字符串结尾.传入start=0或者不传入start,就是复制了整个 ...
- SQL Server 2012 Enterprise Edition安装过程详解(包含每一步设置的含义)
一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”.(首次安装数据库系统或向现有数据库系统添加功能,均选择此选项) 二.随后,安装程序进行“安装程序支持 ...
- beforefieldinit释义
首先让我们认识什么是,当字段被标记为beforefieldinit类型时,该字段初始化可以发生在任何时候任何字段被引用之前.这句话听起了有点别扭,接下来让我们通过具体的例子介绍. /// <su ...
- DropdownList的处理总结
创建一: List<SelectListItem> items = new List<SelectListItem>() { new SelectListItem(){Text ...
- 在windows平台下忘记了root的密码如何解决?
1.打开MySQL配置文件 my.ini中,添加上skip-grant-tables,可以添加到文件的末尾或者是这添加到[mysqld]的下面. 2.然后重启MYSQL服务 windows环境中: n ...
- DRBD脑裂解决方法
1.查看主服务器 [root@master ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: (ap ...
- 关于Eclipse的编码配置和字体大小设置
编码设置 1.工作空间编码:Window-->Preferences-->General-->Workspace 2.工程文件编码:项目-->Properties-->R ...