JavaScript编程是怎样的

这篇文章将为大家详细讲解有关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.当一个域被包含在

元素中时,其DOM元素会有一个form属性指向form的DOM元素,元素则会有一个叫作elements属性包含一个类似于数据的集合,其中包含全部的域

2.submit方法可以调用事件对象的preventDefault来禁用默认行为

C.文本域

selectionStart和selectionEnd属性包含光标和所选文字的信息。当没有选中文字时,这两个属性的值相同,表明当前光标的信息。当一部分域被选中时,这两个你属性值会不同,表明文字开始位置和结束位置

D.选择域

multiple可以多选,size用来设置同时可展示的选项,设置3显示3行,与multiple无关。