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 应用程序之间的交互 ...
随机推荐
- NYOJ 46-最少乘法次数(数论)
题目地址:pid=46">NYOJ 46 思路:能够化成二进制来求解.结果是最高位的位数-1+最高位后面1的个数.比如:对于3.它的二进制代码为11,就是用这个最高位(2-1)加上后面 ...
- .NET MV4 Remote远程验证注意事项及案例
首先是模型代码 public class LoginModel { [Required] [Display(Name = "用户名")] [Remote("CheckNa ...
- Java File类读取文件属性
package myjavademo;import java.io.*; publicclass MyJavaDemo { public static void main(String[] ...
- ORACLE告警日志
告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...
- 【MFC学习笔记-作业8-蝴蝶飞~】【什么鬼作业】
作业要求: 用定时器控制蝴蝶在窗口废物,如图所示... 这是什么鬼作业啊...蝴蝶还要我这个手残手画啊233333333 (ノಠ .ಠ)ノ彡┻━┻ 不过多亏之前几个鬼作业的福 收获颇 ...
- iOS设计模式解析(四)组合模式
组合模式:将对象组合成树形结构以表示"部分-整体"的层次结构.组合是的用户对单个对象和组合对象的使用具有一致 Cocoa Touch中组合模式使用:Cocoa Touch框架中,U ...
- [ZT]DAS\NAS\IP SAN\FC SAN之区别
DAS:服务器直接后挂存储设备,最经济的一种结构. NAS:网络上直接挂接的存储设备,其实就是处于以太网上的一台利用NFS.CIFS等网络文件系统的文件共享服务器. SAN是网络上的磁盘,NAS是一个 ...
- java整体集合框架
1.关于集合的两道面试题 先来看几道题目: 1.创建一个不可变的的集合: public static void main(String[] args) { Set<String> set ...
- jQuery的实用小技巧
1. 禁止右键点击 $(function(){ $(document).bind('contextmenu', function(e){ return false; }) }) 2. 隐藏搜索文本框文 ...
- jquery编写的简单日历
以前在开发web页面的时候遇到日历,都是直接引入一些日历组件来用,一直不太明白实现原理,总感觉挺复杂的. 今天尝试着用jquery写了一个简单的日历功能,可以选择年份,月份,返回今天,原来简单的日历功 ...