javascript高手之路笔记4燕十八老师.docx

上传人:b****5 文档编号:30006803 上传时间:2023-08-04 格式:DOCX 页数:13 大小:125.78KB
下载 相关 举报
javascript高手之路笔记4燕十八老师.docx_第1页
第1页 / 共13页
javascript高手之路笔记4燕十八老师.docx_第2页
第2页 / 共13页
javascript高手之路笔记4燕十八老师.docx_第3页
第3页 / 共13页
javascript高手之路笔记4燕十八老师.docx_第4页
第4页 / 共13页
javascript高手之路笔记4燕十八老师.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

javascript高手之路笔记4燕十八老师.docx

《javascript高手之路笔记4燕十八老师.docx》由会员分享,可在线阅读,更多相关《javascript高手之路笔记4燕十八老师.docx(13页珍藏版)》请在冰豆网上搜索。

javascript高手之路笔记4燕十八老师.docx

javascript高手之路笔记4燕十八老师

正则表达式:

正则表达式的web开发中的常见场合

1.邮箱验证

2.用户名验证

3.替换字符串的某一部分

4.信息采集,用来分析有效的代码段

 

正则表达式:

规则表达式

“一种有规律的字符串的描述”

正则表达式是一门独立的知识,同样的一段描述,比如:

对于email的匹配表达式,

在不同语言是一样的,但是,调用的函数可能不一样

 

学习正则表达式

1.在js里,如果写一个正则表达式,”/正则表达式/”(不含双引号)

2.在js里,用正则表达式来验证字符串是否满足,可以用reg.test(string)

3.在js里,用正则表达式的exec()函数,用来查找匹配的选项,并把查到的值取出

4.字符串应用正则:

string.mathc(reg);正则查找字符串

string.search(reg);正则查找位置

string.replace(reg,’newstr’);正则替换

string.split(reg);正则拆分

 

正则表达式3句话

1.要找什么字符

2.从哪找?

3.找几个?

 

1.要找什么字符?

1.1字面值’hi’,直接找’hi’

1.2字符集合来表示:

[abcd],指匹配abcd中的任意一个

1.3用范围来表示字符[0-9][a-z][A-Z]

1.4字符“簇”(就系统为常用的字符集合创建的一个简写)

例:

[0-9]----------------------->\d

[0-9a-zA-Z_]------------->\w

[\t\v\f\r\n]-------------->\s空白符

1.5补集的形式表示字符集合

例:

[0-9---------------->[^0-9]

对于字符簇,只需把字母大写,即可表示补集

[\d]----------------->[\D],[\w]-------------->[\S]

1.6任意字符不包括换行符

 

2.从哪找,到哪结束

2.1\b----------->单词边界

\bhi从单词的开始边界开始匹配hi

2.2\B------------>单词的非边界,把单词的中间某一部分取出来

把中间含有hi的单词取出,即hi不能在两端

2.3^caret,从字符串的起始位置开始匹配

2.4$匹配到待匹配的字符串的结束位置

 

3.找多少

*:

0--------->N

+:

1--------->N

?

0或1次

a{n}:

字符a准确的出现n次

a{n,}:

字符a至少出现n次

a{n,m}:

字符a出现n----->m次

个数修饰符默认是贪婪模式,尽量多找

在上面的“个数”修饰符后面加?

,则为非贪婪模式,尽量少找

 

4.模式

以匹配为例,默认情况,match找到一次就结束

能否告诉匹配过程,一直找,在全文范围内一起找

g-------->全局模式globle

i--------->忽略大小写ignore

m------->多行模式

s--------->单行模式把整篇文章看成一行js不支持单行模式

在js里不支持单行模式的情况下,如何换行?

--什么样的模式能代表所有字符串?

--用[\d\D],[\s\S],[\w\W]代表所有字符

 

5.正向预查:

(?

=待查字符)字符后为‘待查字符’,则返回前面字符

6.负向预查(?

!

待查字符)找到的是单词为‘待查字符’的后面的部分

反向引用/兵向引用

子表达式:

Exec为例

匹配得到的数组,第0个单元代表“整个正则表达式的结果”

1

2

3

……

N,则代表第N个表达式的匹配结果

如何引用子表达式所匹配的结果?

$N来匹配第N个子表达式的匹配结果

 

JS中的事件

行为、样式与结构相分离

 

绑定事件的三种方式

1.直接写在html元素中声明

这个效果,等同于在点击div的时候,执行”t();”这一语句

在全局范围内执行

问:

在这种绑定方式中,如何达到点击后,把div的背景换成蓝色

 

2.第二种绑定方式

DOM对象.onclick=function(){}

这种绑定是把一个DOM对象的onclick属性赋值一函数

在这种绑定方式中,只能给一个事件绑定一个处理函数

 

如何用函数来调用其他函数的形式

例:

onclick=function(){fun1(),fn2();}

那么此时,fn1,fn2中的this又指向window

如何绑定多个函数,并令this指向DOM对象?

 

3.第三种绑定事件的方法

DOMlev3的事件绑定标准

添加和去除监听事件

addEventListener(‘事件’,函数,);

//第一个参数事件参数,没有前缀”on”w3c的标准,IE不支持

 

注意:

1.如果添加了多个事件处理函数,按添加时的先后顺序来执行

2.事件处理函数中的this指代DOM节点自身(w3c标准)

3.第一个事件参数,一很把事件名称的on去掉(w3c标准)

 

去除绑定

removeEventListener(‘事件’,函数);

 

IE下绑定事件与解除事件的方法

attachEvent(‘on事件’,函数);//事件要加on

detachEvent(‘on事件’,函数);

 

总结:

W3caddEventListener()与IE的attachEvent()的不同

1.函数名不同

2.事件名不同,IE下要加on,w3c不加on

3.加事件后的执行顺序不同,w3c按绑定事件的顺序来执行,而IE6,7是后绑定的事件先发生

4.This的指向,w3c绑定函数中的this指向DOM对象,而IE6,7中,指向window对象

5.

 

事件的捕捉与冒泡模型

在w3c的模型中

addEventListener支持第3个参数来声明事件的模型为冒泡还是捕捉

如果声明为true,则为捕捉方式

如果声明为false,或者不声明,则为冒泡方式

注意:

IE的attchEvent没有第3个参数,不支持捕捉模型

事件对象的概念:

当事件对应的函数被触发时,函数会接收到一个参数//w3c标准

例:

xx.onclick=function(ev){alert(er)}

点击后,ev参数就代表单击那一瞬间的“各个参数”,以一个对象的方式传过去

对于IE,当事件发生的瞬间,事件对象赋给

 

事件的中断

如何中断事件的传播?

在w3c事件.stopPropagation();

在IE事件.cancelBubble=true;

 

取消事件的默认效果

事件对象.preventDefault();//阻止事件的默认效果w3c方法

事件对象.returnValue=false;//设置

 

JS之作用域链

作用域链

原型链

AO上有哪些属性

对于函数的AO,属性来自于3个方面

1.参数

2.局部变量声明

3.函数声明

 

在函数调用的瞬间,AO这样形成

首先,分析参数,把分析后的参数,形成AO的属性

如果传来实参,则把实参赋给相应的属性

其次,分析var声明

以varstr=’hello’;

把str声明为AO的属性,值为undefined;

如果var声明的变量名与形参名称一致,不产生影响,因为AO的str属性已经存在

最后,分析函数声明

Function函数名(){

}//有函数名

函数声明,假设函数名为fn,

函数声明会把函数赋为AO.fn属性的值

函数声明与函数表达式的区别

表达式必有返回值,把返回值(即茂名函数)赋给了一个变量

此时,就是普通的赋值过程

例:

varfn=function(0{},这是一个函数表达式

对于上例,函数表达式返回函数,并把函数作为值,赐给fn

而函数声明的优先级主

 

This与arguments

当一个函数运行时候,函数内部能引用的变量有这么几种

AO

arguments

this

 

对于arguments和this,每个函数都有自己独有的arguments和this,且不进行链式查找

arguments是什么?

答:

arguments是收到的实参的副本

在词法分析中,首先按形参形成AO的属性,值为undefined,当实参传来时,再修改AO的相应属性,

并把所有收到实参收集起来,放到一个arguments对象里

T(a,b,c){}

调用时:

t(1,2,3,4,5)5个参数

此时,AO属性只有a,b,c3个属性,arguments里有1,2,3,4,5所有的值

对于超出形参个数之外的实参,可以通过arguments获得

Arguments的索引,从0,1,2……递增,与实参逐个对应

Arguments.length属性代表实参的个数

Arguments一定不是数组,是长的比较像数组的一个对象虽然也有length属性

Arguments每个函数都有,因此,arguments只会在内部找自身的arguments,无法引用到外层的arguments

 

This是谁

This是指调用上下文

针对函数的应用场景来讨论

函数的4种调用方式

1:

函数方式

直接调用函数名,或函数表达式的返回值

This指代全局对象window

2:

属性方式(对象方法方式)

This是指该对象

3:

构造器方式

通过new函数名(),来创建对象

在js里,构造函数与对象的关系比较松散,对象就是”属性=>”的集合

构造器的使用,是制造一个对象,把this指向该对象

4:

call,apply方式

函数本身即是对象,对象就有方法

函数名.call(对象,参数1,参数2,………);

以fn.call(obj,’a’,’b’);

实际效果相当于

1:

fn内部的this指向了obj

2:

fn(‘a’,’b’);

Apply的效果与call一样,只不过传参时,把所有参数包装在数组里,传过去

例:

fn.call(obj,’a’,’b’)=========>fn.apply(ojb,[‘a’,’b’]);

还有一种改变this的方法,用with语句

With(对象){

语句1:

语句2;

……

}

在with内部的语句就把参数中的对象当成了上下文环境

 

函数的作用域,不取决于函数运行时报环境,取决于函数声明时的环境

Js中的面向对象

属性,方法-----对象

“类”能做到封装,继承,多态,

“类”的静态方法

1.Js中的对象是什么?

答:

js的对象就是键值对的无序集合

2.3种创建对象的方法

2.1通过字面量来创建对象

例:

{age:

22,hei:

180}

{}---空对象,没有属性

2.2通过newObject();

2.3通过构造函数来创建对象(和第2种没区别,因为Object就是系统内建的构造函数)

 

Js面向对象中的封装

对象的属性外界是可读可写的,如何来达到封装的目的?

答:

通过闭包+局部变量来完成

在构造函数内部声明局部变量,和普通方法

因为作用域的关系,只有构造函数内的方法,才能访问到局部变量

而方法对于外界是开放的,因此可以通过方法来访问局部变量

 

Js面向对象中的继承

1.原型链继承

在查找属性或方法的过程中,沿着原型链来查找属性

对象-原型-原型的原型--------空对象------NULl

原型形成一条链

这个查找属性的方式称为js的原型链

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1