当前位置: 首页 > 编程日记 > 正文

ES和JS的区别,以及JavaScript的基本组成

JavaScript是语言,而ECMAScript(即ECMA-262,ECMA是欧洲计算机制造商协会)是为了规范JS而制定的标准,ECMAScript有不同版本,最近的版本是第10版,发布于2019.6。

完整的JavaScript的实现包含以下几个部分

  • 核心(ECMAScript):由ECMA-262定义并提供核心功能。
  • 文档对象模型(DOM):提供与网页内容交互的方法与接口。
  • 浏览器对象模型(BOM):提供与浏览器交互的方法与接口。

可以用下面这张图进行粗略的记忆


具体来说,ECMA-262定义了一门语言的如下部分

语法

类型

语句

关键字

保留字

操作符

全局对象


ECMA-262第6版,俗称ES6、ES2015或ES Harmony(和谐版),于2015年6月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。


DOM Level 1 在1998.10成为W3C的推荐标准。它由DOM CoreDOM HTML两个部分组成。DOM Core提供了一种映射XML文档,从而方便访问和操作文档任意部分的方式;DOM HTML扩展了前者,并增加了特定于HTML的对象和方法。

DOM Level 2  新增了以下模块,以支持新的接口。

DOM视图:描述追踪文档不同视图(如应用CSS样式前后的文档)的接口。

DOM事件:描述事件及事件处理的接口。

DOM样式:描述处理元素CSS样式的接口。

DOM遍历和范围:描述遍历和操作DOM树的接口。

DOM Level 3 增加了以统一的方式加载和保存文档的方法(包含在一个叫DOM Load and Save的新模块中),还有验证文档的方法(DOM Validation)。

DOM Level 4 新增Mutation Observers,替代 了Mutation Events .


BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的扩展都归在 BOM 的范畴内。 下面就是这样一些扩展。

弹出新浏览器窗口的能力;

移动、缩放和关闭浏览器窗口的能力;

navigator对象,提供关于浏览器的详尽信息;

location对象,提供浏览器加载页面的详尽信息;

screen对象,提供关于用户屏幕分辨率的详尽信息;

performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;

对cookie的支持;

其他自定义对象,如XMLHttpRequest和IE的ActiveXObject。


出处:《JavaScript高级程序设计(第4版)》Matt Frisbie著 李松峰译

相关文章:

微软职位内部推荐-Senior Software Engineer-Eco

微软近期Open的职位:The MOD Ecosystem team is dedicated to expanding the reach and value of Office by enabling developers to create solutions built on the Office suite of applications or powered by the O365 services. &nbsp We have an exciting mix of cha…

转Meta的http-equiv属性详解

http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。 meat标签的http-eq…

bzoj 2946 [Poi2000]公共串——后缀自动机

题目:https://www.lydsy.com/JudgeOnline/problem.php?id2946 对每个串都建一个后缀自动机,然后 dfs 其中一个自动机,记录同步的话在别的自动机上走到哪些点了;只要有一个自动机上走不下去了,就都走不下去了。每走到一…

CSS:当子元素皆浮动,撑开父元素的3种方式

1. 在子元素后面补充同级的空元素&#xff0c;并定义清除浮动样式 html文件 <main><div><span>肥水东流无尽期。当初不合种相思。梦中未比丹青见&#xff0c;暗里忽惊山鸟啼。</span><br><br><span>春未绿&#xff0c;鬓先丝。人间…

js正则表达式的使用详解

本文转自&#xff1a;http://www.jb51.net/article/39623.htm 1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符1定义正则表达式在js中定义正则表达式很简单&#xff0c;有两种方式&#xff0c;一种是通过构造函数&#xff0c;一种是通过//&#xff0c;也…

Python安装及netcdf数据读写

为什么80%的码农都做不了架构师&#xff1f;>>> 一、在CentOS7系统上安装Python3 在anaconda官网下载&#xff08;http://https://www.anaconda.com/download/#linux&#xff09;&#xff08;Anaconda指的是一个开源的Python发行版本&#xff0c;是Python的包管理器…

用Visio进行数据库建模、设计和实现

用Visio进行数据库建模、设计和实现 摘要&#xff1a;Visio是微软著名的图形软件&#xff0c;功能强大。使用Visio完成绘图任务时能够显著地提高工作效率和质量。目前功能最全的Visio版本是VSEA(Visual Studio Enterprise Architect)2003所自带的2003版。 原文发表在中科院网络…

JavaScript如何声明对象、函数以及对象中的函数(即方法)

目录 声明对象的2种最常见方法 声明函数的2种最常见方法 在对象中声明函数 声明对象的2种最常见方法 1&#xff09; var Zhihuijun {name:彭志辉,age:28,upName:稚晖君,company:Huawei,};console.log(Zhihuijun.name目前在Zhihuijun.company工作); 2&#xff09; var Zhi…

python之抽象基类

抽象基类特点 1.不能够实例化 2.在这个基础的类中设定一些抽象的方法&#xff0c;所有继承这个抽象基类的类必须覆盖这个抽象基类里面的方法 思考 既然python中有鸭子类型&#xff0c;为什么还要使用抽象基类&#xff1f; 一是我们在某些情况下希望判定某个对象的类型&#xff…

Poolmon

P 排序标记列表中的通过分页&#xff0c;无-分页或混合。请注意 P 循环通过每个。B 进行排序按最大字节使用情况的标记。M 按最大字节分配对标签进行排序。T 按标记名称按字母顺序排序标记。E 显示分页&#xff0c;跨底部未分页的总计。循环。A 按分配大小对标签进行排序。F 按…

移动网站性能优化(未完。。。)

移动网站天生有三种性能限制&#xff1a;带宽低&#xff0c;内存小&#xff0c;处理器性能低。 这些性能挑战又加上其他的问题&#xff0c;如&#xff1a; 网页比以前更大延迟相差巨大下载速度相差巨大解决问题&#xff1a; 改善网站性能的主要策略并没有因为从PC变成手机或者平…

JavaScript对象数组示例

可以用于暂时无法从数据库中拿到数据时&#xff0c;模拟数据使用 var datas [{name:囧菌,subject:JavaScript,grade:100 },{name : 双笙,subject : React,grade : 100 },{name:陈拾月,subject:Vue,grade:100 }]; 其实相当于 var datasInt [1,2,3]; 注意&#xff1a;是引号…

PHP协程:并发 shell_exec

在PHP程序中经常需要用shell_exec执行一些命令&#xff0c;而普通的shell_exec是阻塞的&#xff0c;如果命令执行时间过长&#xff0c;那可能会导致进程完全卡住。在Swoole4协程环境下可以用Co::exec并发地执行很多命令。 本文基于Swoole-4.2.9和PHP-7.2.9版本协程示例 <?p…

oralce 增加表字段命令|oralce 增加表字段类型命令

oralce 增加表字段命令 语法 alter table 表明 add 字段名 类型 alter table aqcuser add email varchar(36)转载于:https://www.cnblogs.com/bestsaler/archive/2010/09/08/1835430.html

mac 下周期调度命令或脚本

crontab 是在linux服务器上部署定时任务的方法0 5 * * * /usr/bin/python /data/www/tools/mysql_backup.pycmd之前有5个项目要填&#xff0c;分别对应分钟 小时 天 月 一周当中第几天( 0-6 ,0表示星期天)填写方法* 表示都满足&#xff0c;例如 * * * * * 表示每分钟执行一次&a…

JavaScript封装一个注册函数解决兼容问题

我们知道JavaScript注册(绑定)事件主要有两类方式&#xff0c;第一类传统方式具有注册事件的唯一性&#xff0c;即对于同一元素的同一事件&#xff0c;不会出现两个处理函数&#xff0c;如下 var btn document.querySelector(button);btn.onclick function(){document.body.s…

四种DCOM错误的区别,0x80080005 0x800706be 0x80010105 0x

四种DCOM错误的区别Differences between the following DCOM error0x800800050x800706be0x800101050x800706ba0x80080005:CO_E_Server_Exec_FailureServer execution failedIt is usually quite clear: COM (really, RPCSS) tried to launch a particular server process and e…

给django视图类添加装饰器

要将login_required装饰到view class的dispatch方法上&#xff0c; 因为dispatch方法为类方法&#xff0c;不是单个的函数&#xff0c;所以需要将装饰函数的装饰器 login_required转化为装饰类方法的装饰器&#xff0c;就要用到method_decorator . method_decorator的参数可以是…

JavaScript实现智能搜索框

应用场景&#xff1a; 1. 搜索框在页面中占据的空间过小&#xff0c;希望无论浏览到什么位置&#xff0c;可以轻易地回到并聚焦搜索框。 2. 搜索框里面的文字大小过小&#xff0c;希望能够在上方开辟一块空间放大内容 解决思路&#xff1a; 1. 对整个页面添加键盘事件keyup…

搜索引擎技术之概要预览

搜索引擎技术之概要预览前言近些天在学校静心复习功课与梳理思路&#xff08;找工作的事情暂缓&#xff09;&#xff0c;趁闲暇之际&#xff0c;常看有关搜索引擎相关技术类的文章&#xff0c;接触到不少此前未曾触碰到的诸多概念与技术&#xff0c;如爬虫&#xff0c;网页抓取…

Linux 守护进程,编写(转载)

设置守护进程过程&#xff1a;1.创建子进程&#xff0c;父进程退出2.在子进程中创建新会话3.改变当前目录为根目录4.重设文件权限掩码5.关闭文件描述符*6.守护进程里&#xff0c;忽略SIGCHLD信号 (即使fork两次&#xff0c;新进程由init接管&#xff0c;不进行signal(SIGCHLD,S…

RecycleView的notifyItemRemoved使用注意

转载请标明出处&#xff0c;维权必究&#xff1a;https://www.cnblogs.com/tangZH/p/10116095.html 我们为了移除RecycleView的某一项&#xff0c;会用RecycleView的notifyItemRemoved&#xff08;int position&#xff09;方法&#xff0c;但是需要注意的是&#xff1a;1、用该…

JavaScript实时更新中国标准时间

用到Date对象和BOM中的setInterval()定时器。 效果如下&#xff08;每隔1s刷新一次&#xff09; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&q…

【转】Flex4:利用HttpService与ASP.NET传输JSON数据(登录为例)

开发环境&#xff1a;Flash Builder4,Vs2005 1、首先打开FlashBuilde4,创建一个名为HttpService_Net_Json的flex项目 &#xff08;图1&#xff09; 然后下一步,应用程序类型选择web,应用程序服务器类型选择ASP.NET(如图2) &#xff08;图2&#xff09; 下一步&#xff0c;出现配…

使用Node.js写一个简单的api接口

引入Http模块 默认你已经安装了Node.js Node当中内置了Http模块&#xff1b; 可以使用 var http require("http"); 复制代码引入http模块&#xff1b; Hello world 用Node.js实现一个HTTP服务器程序非常简单。我们实现一个最简单的Web程序&#xff0c; 它对于所有请求…

body,td,th {

三、继承中容易引起的错误有时候继承也会带来些错误&#xff0c;比如说下面这条css定义&#xff1a; body{color:blue} 在有些浏览器中这句定义会使除表格之外的文本变成蓝色。从技术上来说&#xff0c;这是不正确的&#xff0c;但是它确实存在。所以我们经常需要借助于某些技巧…

JavaScript实现 按钮不可过频繁使用

主要用到setInterval和clearInterval方法和一个计时变量。 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta na…

二十分钟教你如何将区块链应用与函数计算相结合

前言 本篇文章适合对区块链应用感兴趣或是想要通过函数计算服务进一步开发区块链应用的新人。本文将结合阿里云区块链服务、阿里云函数计算服务、阿里云日志服务 以及社区应用 Marbles&#xff0c;手把手教大家如何将阿里云区块链服务与阿里云函数计算服务相结合&#xff0c;并…

【转】推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven&#xff1a;Maven使用声明进行构建并进行依赖管理&#xff0c;偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置&#xff0c;所以维护起来相当困难。Gradle&#xff1a;Grad…

科研成果汇总:收获的季节

感谢课题组各届成员(2006&#xff5e;2010级)长期不懈的努力与付出&#xff0c;特别感谢目前仍工作在第一线的各位成员的鼎力配合与协作&#xff0c;大家辛苦了&#xff01;同时&#xff0c;还要感谢研究所对我们组的大力支持与帮助&#xff01;谢谢大家&#xff01; BTW&#…