【JavaScript】浅谈JavaScript

【JavaScript】浅谈JavaScript

本人有两年的前端开发经验,对前端知识也是有一个浅浅的认知。最近打算重新或者更深入的去了解JavaScript这门语言,以下言论都是参考 红宝书和网上一些博客(如有引用必附链接)总结归纳,如果我的言论有误或触犯到他人利益,欢迎评论,我会加以改正或删除。

一般理解的JavaScript

我们大众理解的JavaScript一般指的是ECMAScript(ES),但是实际上JavaScript远远不限于ECMAScript,但是值得肯定的是ECMAScript是JavaScript的核心。

完整体的JavaScript

核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)

ECMAScript

ECMAScript,即ECMA-262定义的语言,并不局限于Web浏览器。事实上,这门语言没有输入和输出之类的方法。ECMA-262将这门语言作为一个基准来定义,以便在它之上再来构建更稳健的脚本语言。web浏览器只是ECMAScript实现可能存在的一种宿主环境(host environment)。宿主环境提供ECMAScript的基准实现和与环境自身交互必需的扩展。扩展(比如DOM)使用ECMAScript核心类型和语法,提供特定于环境的额外功能。其他宿主环境还有服务器端JavaScript平台Node.js和即将被淘汰的Adobe Flash。
如果不涉及浏览器的话,ECMA-262到底定义了什么?在基本的层面,它描述这门语言的如下部分:

  1. 语法
  2. 类型
  3. 语句
  4. 关键字
  5. 保留字
  6. 操作符
  7. 全局对象

ECMAScript只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript实现了ECMAScript,而Adobe ActionScript同样也实现了ECMAScript。

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

DOM

文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在HTML中使用扩展的XML。
关于HTML和XML的关系,可以参考这篇文章,https://blog.csdn.net/wlj323/article/details/48501353。
在我的理解中,DOM就是浏览器提供的一种操控文档对象的API的统称。
像我们所熟知的document就是目前主流浏览器所提供的API对象(所以除了JavaScript可以访问以外还有很多其他语言也能访问)。
有过小程序开发经验的应该都知道在小程序里面是不能使用document操控文档对象的,从而有些博主就说小程序里面没有dom,我个人的理解来说这句话是不严谨的,就拿微信小程序来说,他提供了wx.createSelectorQuery()让我们来操作dom,我们只能说小程序里面的标准不支持使用document对象,但是你并不能说他没有DOM。(个人观点 不喜勿喷 欢迎讨论)

BOM

浏览器对象模型(BOM)API,用于支持访问和操作浏览器的窗口。使用BOM,开发者可以操作浏览器显示页面之外的部分。而BOM真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的JavaScript实现。HTML5改变了这个局面,这个版本的HTML以正式规范的形式覆盖了尽可能多的BOM特征。由于HTML5的出现,之前很多与BOM有关的问题都迎刃而解。
总体来说,BOM主要针对浏览器窗体和子窗体(frame),不过人们通常会把任何特定于浏览器的扩展都归在BOM的范畴内。比如,下面就是这样的扩展:

  1. 弹出新浏览器窗口的能力;
  2. 移动、缩放和关闭浏览器的能力;
  3. navigator对象,提供关于浏览器的详尽信息;
  4. location对象,提供浏览器加载页面的详尽信息;
  5. screen对象,提供关于用户屏幕分辨率的详尽信息;
  6. performance对象,提供浏览器内存占比、导航行为和时间统计的详尽信息;
  7. 对cookie的支持;
  8. 其他自定义对象,如XMLHttpRequest和IE的ActiveXObject。

因为在很长时间内都没有标准,所以每个浏览器实现的都是自己的BOM。有一些所谓的事实标准比如对于window对象和navigator对象,每个浏览器都会给他们定义自己的属性和方法。现在有了HTML5,BOM的实现细节应该会日趋一致。关于BOM,后面会再专门详细介绍。
(以上摘自于“红宝书”第一章 1.2.3)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值