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 应用程序之间的交互 ...
随机推荐
-
[C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
-
Java获取本机的IP与MAC地址
有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...
-
iOS设计中的“代理”
“代理”--在iOS的开发设计中是一个非常重要的概念,同时又是十分基础的知识.所以,掌握“代理”势在必行! 以下,结合一个具体的例子,详细认识“代理”: 1, 图例解释: ①:定义两个文本输入框UIT ...
-
题解-POI2009 WSP-Island
Problem bzoj1137 题意概要:给定一个凸多边形坐标.点按顺时针编号 \(1\) 到 \(n\).任意两点之间都有一条长度为欧氏距离的边相连.边相交处可以*穿行.有 \(m\) 条边不能 ...
-
Codeforces Round #541 (Div. 2) (A~F)
目录 Codeforces 1131 A.Sea Battle B.Draw! C.Birthday D.Gourmet choice(拓扑排序) E.String Multiplication(思路 ...
-
Redis 学习之路 (011) - redis 多数据库
一台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的 ...
-
OC学习2——C语言特性之函数
1.OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的.因此,函数定义的语法格式如下: 函数返回值类型 函数名(形参列表) { //由零条或多条可执行性语句组成的 ...
-
Redis安装完后redis-cli无法使用(redis-cli: command not found)已使用
wget http://download.redis.io/redis-stable.tar.gz(下载redis-cli的压缩包) tar xvzf redis-stable.tar.gz(解压) ...
-
虚拟机 VMware Tools 安装
Ubuntu 或具有图形用户界面的 Ubuntu Server 要挂载 CD 镜像并解压,请按以下步骤操作: 启动此虚拟机. 使用具有管理员权限或 root 用户权限的帐户登录此虚拟机. 选择:对于F ...
-
python 全栈开发:数据类型整体分析
数据类型初始 数据类型: int :用于计算. 例子:1.2.3.4........................... 常用方法操作: bit_length() ps:求一个数字转换成二 ...