这篇文章将为大家详细讲解有关JavaScript编程是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
成都创新互联公司是专业的网站建设公司,提供网站建设,网站制作,网站设计等网站开发一体化解决方案;包括H5开发,小程序开发,网站定制,企业网站建设,商城网站定制开发,响应式网站设计,建网站,PHP网站建设,软件开发,软文营销,网站营销。欢迎做网站的企业前来合作洽谈,成都创新互联公司将竭诚为您服务!
处理缺陷与错误
A.严格模式
当启用了严格模式(strict mode)后,JS就会在执行代码时变得更为严格。只需在文件或函数顶部放置字符串“use strict”就可以启用严格模式了。
B.异常
1.异常是一种当代码执行中遇到问题时,可以触发(或抛出)异常的机制,异常只是一个普通的值。触发异常类似于从函数中强制返回:异常不只跑出到当前函数中,还会跳出函数调用方,走到当前执行流初次调用函数的位置。这种方式被称为“堆栈展开(Unwinding the Stack)”。
2.异常真正强大的地方在于你可以在堆栈上设置一个“障碍物”,当异常缩减堆栈到达这个位置时会被捕获。接着你就可以对异常进行一些处理,并使得程序从异常捕获点开始继续执行。
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/8.html
正则表达式
1.exec方法,如果无法匹配模式则返回null,否则返回一个表示匹配字符串信息的对象。字符串也有个match方法
2.字符串replace,第二个参数可以用函数
3.//gi,g表示全局,i表示不分大小写
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/9.html
模块
A.模块的好处
1.模块根据一些标准将程序划分为不同的代码块,每份代码都自成一个整体。
2.设计良好的模块可以提供外部代码访问所需的接口。定义良好的模块接口可以确保旧接口在模块更新后保持不变。对外提供的接口应该具有统一和内聚的特性。
B.使用函数作为命名空间
1.为了防止模块内部使用的变量会污染全局命名空间,我们将该模块包裹在函数中。
2.将命名空间函数放在一对圆括号中:如果表达式使用关键字function开头,表明这是一个函数表达式。但如果一个语句使用function开头,则将该语句看成一个需要函数名的函数声明,而非一个表达式,也就是说,我们无法在语句后面添加括号来调用该函数。
C.使用对象作为接口
对于代码量比较大的模块来说,定义一个对象,并在定义完需要导出的某些元素时,将这些元素添加到该对象的属性中。
D.与全局作用域分离
构造一个require函数,调用该函数时指定一个模块名称,该函数会装载模块文件(依赖于我们运行的平台)并返回合适的接口对象
E.将数据作为代码执行
不推荐eval,使用new Function(“参数名列表”,“函数体”)
F.接口设计
1.可预测性
2.可组合性
3.层次化接口
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/10.html
项目实战:开发编程语言
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/11.html
文档对象模型
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/12.html
处理事件
A.事件与DOM节点
addEventListener;removeEventListener;
B.传播
1.若段落和按扭都有事件处理器,则先执行最特殊的事件处理器(按扭的事件处理器)。也就是说事件向外传播,从触发事件的节点到其父节点,最后直到文档根节点。最后,当某个特定节点上注册的所有事件处理器按其顺序全部执行完毕后,窗口对象的事件处理器才有机会响应事件。
2.事件处理器任何时候都可以调用事件对象的stopPropagation方法,阻止事件进一步传播。
3.可以使用target属性来创建出特定类型事件的处理网络。event.target.textContent
C.默认动作
调用event.preventDefault,不执行默认的动作
D.焦点事件
focus和blur事件,不会传播!
E.脚本执行时间线
1.即使任何时候都可以触发事件,但同一文档中无法同时执行两个脚本。若一个脚本已经在运行,事件处理器和使用其他方法调度的代码会使该脚本等待执行。
2.若想放到后台进行,同时防止页面无响应,可以使用浏览器提供的Web Worker。
F.定时器
setTimeout,一定时间后执行,clearTimeout
setInterval,每隔一定时间循环执行,clearInterval
利用setTimeout可以进行事件降频
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/13.html
项目实战:平台游戏
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/14.html
使用canvas绘图
A.SVG
1.可缩放矢量图形,专用于描述图形文档而非描述文字文档,保存了对于聊天挖墙脚的基本信息的描述,可以随时移动或修改图像。
B.canvas元素
1.用于绘制二维图形的“2d”与通完openGL接口绘制三维图形的“webgl”
2.filleStyle决定了图形的填充方式
3.strokeStyle和lineWidth用来控制线条的绘制方式
4.fillRect和strokeRect来绘制矩形
5.fillText和strokeText绘制文字
6.beginPath创建一个新的路径,lineTo方法画一条直线,路径画完时可以使用fill填充或stroke勾勒轮廓
7.drawImage从一张图片或另一个画面上移动像素到我们的画布上
8.translate、scale与rotate进行图形变换,一个变换的状态可以通过save来保存,通过restore来恢复
9.clearRect可以在绘制动画时,清除画布的某一部分
C.选择图像接口
1.SVG可以被用来制造可以做任意缩放而仍然清晰的图像。比单纯的HTML更加难以使用,但是更加强大。
2.画布的基于像素的方法在需要绘制大量的微小元素时会有优势,不会构建新的数据结构 而是仅仅重复的在同一个像素上绘制,使得画布在每个图形上拥有更低的消耗。
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/14.html
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/15.html
HTTP协议概述
A.XMLHttpRequest对象
B.HTTP沙箱
请求头中包含Access-Control-Allow-Origin:*告诉其他域名发送请求是没问题的
C.Promise断言
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/16.html
表单和表单域
A.聚焦
在document.activeElement中的值会关联到当前聚焦的元素。通过focus和blur方法来控制聚焦
B.作为整体的表单
1.当一个域被包含在