javascript学习笔记

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Javascript的重要知识点

javaScript两大主要特征

1、javaScript是单线程执行的

从上往下,一步一步执行

2、javaScript是解释性语言

js的执行过程分三步:语法分析、预编译、解释执行

语法分析:就是全盘去扫描,看有没有语法错误

預编译四个步骤:(预编译发生在函数执行之前)

1、创建AO对象

2、找形参和变量声明,并把形参和变量声明作为AO对象的属性,值为undifined

3、把实参值赋给形参

4、在函数体里找到函数声明,值赋予函数体

任何对象,如果未经声明直接赋值,此变量就为全局变量所有。

逻辑运算符,&&与,||或,!非

在js里面,所有类型都可以转换成布尔值,其中:undifined ,“”,NaN,false,0,null转换之后都是false

&&(与):寻假,遇到false返回当前表达式的值,如果是最后一个,直接返回

||(或):寻真,遇到true就返回当前表达式的值,如果是最后一个,直接返回

1、javascript中的变量有两种:原始值和引用值

2、包装类

3、原型: prototype

4、Object.create(原型)

5、this:预编译的时候this指向window

谁调用的,this指向谁

call apply

全局的,this 指向windo

js可以间接改改css,可读写行间样式,没有兼容性问题,碰到float这样的保留字属性,前面应加css:div.style.cssFloat

div.style.width = "200px"

复合属性要拆解,比如:border

查询计算样式,只能查询,不能更改,获取的值最终都是经过计算的

window.getComputedStyle(div,null);

这个方法也是只能查询,返回的是原始值,没有经过计算

div.currentStyle

数组:

数组的定义方法

1、var arr = [];

2、var arr= new Array();

两种方法唯一的区别就是:只传一个参数的时候,第二种方法表示数组的长度

数组就是特殊的对象

数组可以溢出读,但返回结果是undifined

数组常用方法:

1、改变原数组:push、pop、shift、unshift、sort、reverse、splice

2、不改变原数组:concat、join、tostring、slice

push():往数组最后一位加内容,也可以传多个参数

pop():把数组最后一位移除,不用传参,不管传什么都是移除最后一位

unshift():往数组第一位加内容,可以传多个参数

shift():把数组第一位移除

reverse():把数组逆转

splice(从第几位开始(负数表示从倒数第几位),截取的长度,在切口处增加新数据):返回截取的数组

sort():给数组排序,可以自定义写sort

concat():把两个数组连接起来

slice():截取数组

join():把数组按传的字符串连接起来并返回字符串

类数组:属性为索引(数字),必须有length属性,最好加上push

var obj = {

"0" : 'a',

"1" : 'b',

"2" : ‘c’,

"length":3,

"push":Array.pototype.push

}

事件:

事件绑定

1、on+事件名称,兼容性好,但一个对象只能绑定一个事件

div.onclick function)_{

....

}

2、可以绑定多个事件,会按绑定的顺序执行

div.addEventListener('click',事件处理函数,false);

解除事件处理程序

1、div.onclick = null

2、div.removeEventListener('click',事件处理函数,false );

事件冒泡

结构上(非视觉上)嵌套的元素,会存在事件冒泡,自子元素冒泡向父元素

事件捕获(与冒泡相反)

结构上嵌套关系的元素,会存在事件捕获,自父元素捕获至子元素,IE没有捕获事件,先捕获后冒泡

取消冒泡

e.stopPropagation

e.cancleBubble = ture

阴止默认事件

1、return false ;以对象属性的方式注册事件才生效

2、e.preventDefault();

3、e.returnValue = false

事件委托

json.strintify(obj);把strint转换成json

json.parse(str);把json转换成string

异步加载

1、defer 异步加载,但要等到dom文档全部解析完才会执行,只有IE能用,也可以写到代码内部

2、aysnc 异步加载,加载完就执行,aysnc只能加载外部脚本,不能把js写在script标签里面,IE9以下不能用,其它都可以

3、创建script,插入到dom里面,加载完毕后callback

js加载时间线

1、创建document对象,开始解析web页面。解析html元素和他们的文本内容添加element对象和text节点到文档中。这个阶段document.readystate = 'loading'

2、遇到link处部css,创建线程加载,并继续解析文档

3、遇到script外部js,并且没有设置sync和defer,浏览器加载并阻塞,等待js加载完成

4、遇到script外部js,并且设置有async和defer,浏览器创建线程加载,并继续解析文档,对于async的属性脚本,脚本加载完成后立即执行

5、遇到img等,先正常解析dom结构,然后浏览器异步加载src,并继续解析文档

6、当文档解析完成,domcument.readystate = 'interactive'

7、文档解析完成后,所有设置有defer的脚本会按照顺序执行

8、document对象触发domcontentloaded事件,这也标志着程序从同步脚本执行阶段,转化为事件驱动阶段

9、当所有async的脚本加载完成并执行后,img等加载完成后,document.readystate = 'complete',window对象触发load事件

正则表达式

两种创建方式

1、直接量 var reg = /abc/;

2、new RegExp();

推荐使用直接量

reg.test();

str.match();

修饰符

1、i 忽略大小写

2、g 全局匹配

3、m 多行匹配

元字符和表达式

1、\w ==[0-9A-z_] \W == [^\w]

2、\d == [0-9] \D == [^\d]

相关文档
最新文档