JavaScript综述

ECMAScript前身:

  1. ScriptEase,92年Nombas公司开发,开始成为Cmm,后改称ScriptEase
  2. LiveScript,Netscape公司开发,后改称JavaScript
  3. JScript,微软公司于IE 3.0集成的JavaScript克隆版(简称“抄袭”)

97年ECMA基于上面三方的脚本混乱状态,定义了ECMAScript(ECMA-262标准),后被ISO/IEC采纳为国际标准(ISO/IEC-16262)。

ECMAScript是什么:

ECMAScript仅仅是作为一个脚本语言的标准存在,也就是说任何脚本语言都应该基于这个标准来实现。而脚本语言是基于宿主环境存在的,不同的宿主环境具备各自的ECMAScript的实现接口(基于标准定义的函数、对象等),然后在这些接口上扩展,就是整个的脚本语言。

ECMAScript定义了脚本语言实现的语法、类型、语句、关键字、保留字、运算符、(基础)对象。 最新的ECMAScript版本是5.1,于2011年6月发布。

JavaScript:

JavaScript是以Web浏览器为宿主环境的ECMAScript脚本实现,它的扩展包括DOM和BOM两部分,也就是说JavaScript包括三部分:

  1. ECMAScript(核心)
  2. DOM——文档对象模型(内容扩展)
  3. BOM——浏览器对象模型(宿主扩展)

DOM是操作XML和HTML语言的标准,包括两部分:

  1. DOM Core——定义了操纵XML文档的标准
  2. DOM HTML——是对DOM CORE的扩展,定义了操作HTML文档的一些专用方法和对象

DOM并非JavaScript特有的,对于其他脚本语言,DOM还包括另外一些标准:

  1. SVG——可缩放矢量语言
  2. MathML——数字标记语言
  3. SMIL——同步多媒体语言 还有一些非标准的扩展例如:XUL等

BOM——没有任何标准支持BOM,但却存在一些事实上的标准。 每种浏览器都有自己的BOM实现。

Javascript对象分类及列表:

一、本地对象(native object)

  1. Object
  2. Function
  3. Array
  4. String
  5. Boolean
  6. Number
  7. Date
  8. RegExp
  9. Error
  10. EvalError
  11. RangeError
  12. ReferenceError
  13. SyntaxError
  14. TypeError
  15. URIError

二、内置对象(built-in object)

  1. Global
  2. Math

本地对象和内置对象都是ECMAScript的标准对象,区别在于内置对象在宿主环境(Web浏览器)初始化时实例化,只需直接调用即可;而本地对象需要先实例化再调用。本地对象相当于“类”。

三、宿主对象(host Object)

非本地对象即宿主对象。包括DOM和BOM对象。

DOM对象列表:

BOM对象列表:

  1. Window
  2. Navigator
  3. History
  4. Screen
  5. Location
  6. ActiveXObject(IE独有)

原始类型:

  1. Undefined
  2. Null
  3. Boolean
  4. Number
  5. String

原始类型定义了该类型的值的范围及其字面量表示形式。 原始类型存储在桟中,引用类型存储于堆中,桟中只存储只想它的地址值。 原始类型的值空间是固定的、引用类型的值空间是可变的。(就像无符号数字存储4字节)

JavaScript不存在“类”,只有对象。

函数是对象(Function类的对象实例)。

时间: 2024-12-17 07:45:43

JavaScript综述的相关文章

javascript中15种原生对象类型系统综述

前面的话 在编程语言中,能够表示并操作的值的类型称做数据类型,编程语言最基本的特性就是能够支持多种数据类型.javascript拥有强大的类型系统,主要包括原生对象.宿主对象和浏览器拓展对象,本文主要介绍15种原生对象类型系统 原生对象(15种) 原生对象分为两类:原始类型(primitive type)和对象类型(object type).原始类型又分为两类,一类是空值,一类是包装对象:对象类型也可以分为两类:一类是构造器对象,一类是单体内置对象 空值(2种) 与其他语言不同,javascri

JavaScript模板引擎综述

我们将通过本文对JavaScript的模板有一个大致了解.在详细了解时下比较流行的几个模板引擎之前,我会先介绍一下什么是JavaScript模板以及该何时使用和怎么使用这些模板.我会着重讲一下Mustache,Handlebars和jQuery模板. 什么是JavaScript模板? JavaScript模板是将HTML结构与其具体内容相分离的一种手段.模板系统通常会引入一些新的语法,不过这些语法使用起来十分方便,尤其是在别处使用过模板系统的情况下(eg.PHP的Twig).但是需要留意一个有趣

JAVASCRIPT加密方法,JS加密解密综述(7种)

一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为如下格式: alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B 如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下: %61%6C%65%72%74%28%22%u9ED1

Node.js综述

前言 本综述文章旨在帮助读者深入理解下Node.js的本质,不去关注应用的细节,我认为真正的技术问题只有在动手写代码的时候才会遇到,那个阶段解决问题才是真正有意义的. 发展史 Node.js是Ryan Dahl 2009年对外发布的开源醒目,后来该项目被Joyent公司注意到并于2010年成为Joyent公司的一个子项目.2016年微软与Joyent公司合作,Node.js在windows上得到支持. 目前Node.js的版本为V6.11,周围已经形成了一个庞大的生态系统. 特性分析 Node.

JavaScript this用法总结

JavaScript this用法总结 在JavaScript中,this关键字可以说是最复杂的机制之一.对this的作用机制缺乏比较深入的理解很容易在实际开发中出现问题. 1.this的作用 为什么要在JavaScript中使用this呢?因为this提供了一种简明的方式来隐式传递一个对象引用,可以让函数接口设计的简单且容易复用: function display() { console.log(this.name); } var obj1 = {name: "obj1"}; var

1.语言概述-JavaScript权威指南笔记

上周三的时候交给老板目前的项目第一个迭代回顾会的总结.原本是以综述性的表述方式写的,交给他之后表示程序员不要长篇大论.总结要分为优点缺点期望等等块,每块列出条目,简明扼要的表达出来.这里也用这种风格.另外要说的是,可能很多地方是摘抄转述和不精确的个人阶段,开始阶段先这样好了,希望看到自己成长. 1.前端开发工程师必备三种技能:描述网页内容之HTML,描述网页样式之CSS,描述网页行为之JavaScript. HTML:Hyper Text Markup Language.超文本标记语言,据说并不

ASP.NET MVC 排球计分程序 (一)综述

---恢复内容开始--- 本篇博客主要是为了用MVC来做出一个排球的计分程序,该计分程序主要实现的功能有,将两队队员的姓名和其对应的球衣号插入数据库,根据在场上的表现,由记分员记录两队的发球,扣球,拦网等得分情况,在比赛过程中可以实现自动判断是否到达获胜比分,是否获得本场比赛的胜利.当比赛胜时.可以查询出本场的MVP,以及最佳得分员,最佳发球员等数据. 初步计划将这个文章系列分为以下几篇: 1.综述 2. 一些排球计分的基本实现方 3.需求分析与数据库设计 4.实体类和SQLHelper类的设计

突袭HTML5之Javascript系列

突袭HTML5之Javascript API扩展5 - 其他扩展 突袭HTML5之Javascript API扩展4 - 拖拽 突袭HTML5之Javascript API扩展3 - 本地存储 突袭HTML5之Javascript API扩展2 - 地理信息服务 突袭HTML5之Javascript API扩展1 - Web Worker异步执行 突袭HTML5之HTML元素扩展(下) - 增强的Form元素 突袭HTML5之HTML元素扩展(上) - 新增加的元素 突袭HTML5之WebGL

六天玩转javascript:第一天(1)

说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验,并期望从中获得快感,每次使用新的语言进行程序设计的时候,我总是喜欢掌控他有趣的地方,尽管很多与软件工程有悖.这似乎让我出过很多风头,别人的问题似乎没有什么能难倒我的,后来在我开始从工程领域思考问题的时候,我发现很多特点给我带来的"编程快感"引发的麻烦超过了快感本身的价值,很多地方难以被同