js高级---js架构
ECMAScript
1997 年欧洲计算机制造商协会 39 号技术委员会制定了ECMA-262标准(别名 ECMAScript),而浏览器只是负责实现,ie浏览器实现的结果是jscript,远景浏览器实现的是javascript,其它浏览器这个时候还处于受精状态。
所以ECMAScript的版本和javascript和jscript版本并不一定一致。
tip:
1、ECMAScript标准是受javascript影响而诞生的,是javascript那帮人提交的提案给的ECMA协会的,等协会标准出台时,javascript都更新到1.1了,jscript也诞生了。所以,javascript和jscript早于ECMAScript标准
2、不要看现在的ECMAScript6挺火的,什么模块,类及其继承。在es4就出来了。只不过出生的太早,时机未到,就在公开的前一天被扼杀了。后来在原来es3的基础上修改了点东西,内部叫做es3.1,正式发布更名为es5,就是现在当前(2017)浏览器实现的主流标准。
说到es6,不得不说目前个大浏览器实现(es6协议)太慢了,es7都出来了,es6支持还捉襟见肘
Dom
W3C即万维网联盟是另个一个标准协议---Dom标准(网页对象模型,事件、节点、样式)。
IE 浏览器4 和远景浏览器4在开发页面上方面各持己见,为了方便开发人员统一开发,1998年W3C制定了Dom标准
Bom
而Bom则一直没有被标准化,直到html5,才被w3c写入规范
其它
浏览器内核---用于排版html布局的引擎:熟知的有Trident内核(ie使用)、Webkit内核(早期chrome使用)、Gecko内核(fireFox使用)、Presto内核(Opera使用)...
js引擎---用于运行高性能js的编译器:普通js是不需要编译的就直接可以被浏览器解释执行,但是总有些不安分的浏览器,为了性能,搞出了个js界编译器,将js部分编译成字节码文件,好让浏览器内置的js解释器快速执行。因为js解释器一般是用c++、java写的,他们执行字节码文件更快。如v8引擎(chrome、nodejs在用)、SpiderMonkey引擎(fireFox在用)
如果你了解java,我就用java语言去对比
js解释器,就类似于java的JVM,都是负责执行代码的。
js的引擎,就类似于java的javac,负责编译成二进制的字节码文件的
浏览器均内置js解释器(不要转牛角尖,我说的是在js发明之后)、但是只有牛逼的浏览器才内置js引擎
另外浏览器对dom渲染和js解释执行有关系,
一方面,js执行会影响到dom的渲染,所以建议js代码放到页面的最下边
另一方面,而js去动态操作dom元素的时候,如果js放在上边,可能捕获不到dom元素,因为此时dom元素可能还没有渲染完
所以综上所述,都应该把js放到页面的底部,或者加上onload事件等等
关于js的面向对象
js原型与原型链,js是基于原型的面向对象语言(java是基于class的面相对象语言)
关于js的闭包
一个是为了防止变量作用于的污染,另一个是为了方便内部函数取外部函数的值(等同于Java的内部类)
还有重要的一点是:对于ECMAScript标准的实现,除了ie的jscript和远景的javascript,其它浏览器均没有专门为其实现起名字,比如360明明可以起一个名字叫360script,遨游可以起一个叫遨游script,但是!!!他们很多浏览器连内核都用谷歌和火狐的,你认为ECMAScript标准他们愿意亲自去实现?!而且ie实现了,又干不过远景的实现javascript。所以,现在各大浏览器的实现,对ECMAScript标准的支持,一般都叫javascript,即js,没必要死扣这一点
电子书推荐
JavaScript高级程序设计(第3版):http://pan.baidu.com/s/1i5LybIX
ECMA-262-5.1中文版:http://pan.baidu.com/s/1pKXMNiz
js高级---js架构的更多相关文章
- js高级---js运行原理
概述 浏览器组成可分两部分:Shell+内核.浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎.渲染引擎功能作用 渲染引擎,负责对网 ...
- JS高级前端开发群加群说明及如何晋级
JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这 ...
- Node.js高级编程读书笔记Outline
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...
- JS高级前端开发群加群说明
JS高级前端开发群加群说明 *一.文章背景: *二. 高级群: *三. 加入方式: *四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在"前端开发"关键字搜 ...
- Ext.js高级组件
第二章:Ext.js高级组件 grid组件 普通方式 表格面板类Ext.grid.Panel xtype(别名):gridpanel.grid title标题.renderTo渲染至.width宽.h ...
- 基于 Angularjs&Node.js 云编辑器架构设计及开发实践
基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...
- 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯
http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...
- 读JS高级——第五章-引用类型 _记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener( ...
随机推荐
- 14 javaBean 组件
bean类不应该有公开的实例变量. 持续性的值应该通过 getXxx 和 setXxx 方法访问. <jsp: useBean id=”beanName” class=”package.Clas ...
- Android Intent 用法全面总结(转载)
1. [代码]调用拨号程序 1 2 3 4 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent intent = ...
- windows-redis 集群搭建
Windows 配置Reids集群 Redis Cluster 1. 下载安装Redis Redis官方不支持Windows,但是Microsoft Open Tech group在 GitHub上开 ...
- php获取文件后缀的9种方法
获取文件后缀的9种方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 ...
- django用户认证系统——自定义认证后台8
Django auth 应用默认支持用户名(username)进行登录.但是在实践中,网站可能还需要邮箱.手机号.身份证号等进行登录,这就需要我们自己写一个认证后台,用于验证用户输入的用户信息是否正确 ...
- python技巧之下划线(一)
1.python的moudles文件中__all__作用 Python的moudle是很重要的一个概念,我看到好多人写的moudle里都有一个__init__.py文件.有的__init__.py中是 ...
- vertical-align 使用参考
在实现文字与图片垂直对齐的时候,发现了vertical-align的值也是很纷繁复杂,博客讲解各种不懂,最终还是找了CSS权威指南-中文第三版,看了前6章,终于弄明白了,如果你也有不懂的地方,请去看书 ...
- 使用ShardingJdbc分表
项目中做个统一订单的基础服务(只记录订单的基本的公共信息),1.便与后续各种其他业务的接入~ 2.同时APP端提供统一订单信息的查询入口,后续其他业务不用升级 由于统一的订单服务,所以订单量会很大,所 ...
- FineReport---函数
1.NUMTO()需要将数字2345转换成二三四五:NUMTO(2345) 2.Toimage函数:Toimage(path)用于在报表中显示某一路径path下的图片 3.row():为获取当前行号 ...
- Let's encrypt申请泛域名证书
1.下载工具 wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto 2.初始化 ./certbot-auto 3.获取证书(1) ...