JavaScript高手之路学习笔记_第1页
JavaScript高手之路学习笔记_第2页
JavaScript高手之路学习笔记_第3页
JavaScript高手之路学习笔记_第4页
JavaScript高手之路学习笔记_第5页
已阅读5页,还剩25页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaScript高手之路学习笔记

Js如何操作的DOM?

浏览器有html源码渲染的功能把html源码在内存里形成一个DOM对象就是文档对象

还有一个javascript的解释器/执行器引擎

我们在html里写一个js代码js代码引擎所执行而执行的结果就是对DOM的操作而非对

DOM操作的结果就是我们常看到效果比比如图片移动变色

javascrip语言本身的语法

DOM对象

BOM模型browser浏览器模型

浏览器是“宿主”但Js的宿主不限于浏览器也可能是服务器端

Javascript和以后的PHP一样都是一种解释执行的语言

语言分:解释执行和编译执行

英文中国人张三(不会英文)

把英文的报刊翻译成中文报刊然后再看

(翻译完之后多了一份中文版)

找一个同声翻译一连看英语随时翻译出中文来

方式1:第一次运行的时候要多等一会因为要等报纸翻译完毕

但是一旦翻译完毕后以后再运行就能直接运行

方式2:每次运行都要翻译

所以:hello,c----->hello,exe[二进制代码可执行文件]

Hello,php/hello.js—今PHP解释引擎/js引擎--9产生相应的执行效果

Javascript和java的关系

语言本身没有关系

网景公司最早开发出来的在浏览器运行的脚本语言:livescript

开发之后正碰上java如日中天为了抱大腿改名叫javascript

编程共用的东西:

变量、控制结构(顺序/分支/循环)、表达式、语句;

变量的讨论:

请看黑板:

黑板上的内容代表今天的排骨价格:

依据这个场景来深入探讨40.1

编程中的重要概念——变量

我们可以挖掘出的要素:

黑板---------->内存中该变量的存储地址

当天价格--------->变量名

40.1----------〉变量值

数值---------->变量的类型

排骨很贵、房价也很贵

Varage=22;

Varprice=40.1;

当声明上述两个变量之后发生了什么呢

如上js解释引擎先创建2个变量名:ageprice

再为此2个变量申请各自的空间、并获得地址

然后ageprice的地址属性的值就是内存中的地址

也就是说变量名并不直接体现变量的值只能体现该变量在内存中的位置

来看:

Vara=3;

建立变量、申请空间变量指向该空间并把3记录到相应的内存空间

Varb=a;

建立变量b、申请空间变量指向该空间并把a变量对应的内存中的值读出来再存储到b

的相应空间

变量的赋值b=a为例不仅可以把a的值读出来存储到b的相应空间这样的话a,b是相互

独立的修改时不影响对方

这种情况叫“传递赋值”

还有另外一种情况“引用赋值”

变量赋值b=a指向的地址这样b和a都指向同一个地址这样的话a,b是相互影响的修改

时互相影响

在javascript语言里不必像PHP那样用“&"符号来声明引用赋值

Javascript里数组、函数、对象这三都默认即是引用赋值的

Js变量名称的要求:

变量名只能用字母、下划线、数字、$、这4种组成

首字母不能以数字开头

比较新的js标准已经支持用任何UNICODE字符做变量名(当然仍然不能用数字开头)

这意味着汉字可以做变量名(实际开发勿用)

变量名区分大小写

要求命名有意义不要用aaa,c,asdf这样的变量名

变量可以先声明但不赋值;

变量声明:

Varage=22;

Age=22;〃这是一种不规范的写法与加var的区别很大请不要这样写

在Html代码中如何引入javascript

(和css的引入对比学习)

可以用

<scripttype="text/javascript>

Code……..〃自己写的代码

</script>

可以把js代码拿到一个专门的.js文件里

然后引用该文件

<scripttype="text/javascript"scr="">

</script>

注意:外部的.js文件里面直接写js代码不要在开头和结尾加<script></script>

注意一种错误的写法

<scripttype="text/javascript"src="l.js”>

var_name='张三';

alert(_name);

</script>

这样写是不会发生作用的

请注意:如果用2种方式混合引入多个script文件运行效果相当于按顺序把多个script

代码合起来按顺序运行

<script></sctipt>可以写在页面的哪个位置?

答:页面head和body都可以写

而且有的时候会因为写在head区出现一些意外

比如在head的script代码试图去访问body中的D0M对象则会显示找不到

Javascript里如何写注释

1.多行注释

/*

Code…

Code…

*/

2.单行注释

Code—..//注释内容

运算符:

算术运算术:+-*/玳求余)

9%2余1

注意:在js里求余的时候是可以对浮点数求余的

和PHP不一样PHP求余的结果是整型

可以这样:30.5%7=2.530%4.3=4.200000000000001

注意:+号运算时如果有一个操作数是字符串那么最终得到的结果就是字符串

条件运算符:><==!=>=<====!==

>,<,>=,<=

===代表全等于不只值相等类型也要相等

比如:l==true但是l!==true

赋值运算符:

赋值运算符主是把=右侧的值接值或表达式的值赋给左侧的变量

例:age=22;

Age=2012-birth;

Age=age+1;---------->age+=l;

上面的写法对于其他算术运算符同理可以用

逻辑运算符:

或者:II

前面的表达式为值后面的表达式不会执行叫短路

并且:&

前面的表达式为假后面的表达式不会执行

JS里逻辑运算的特殊性

返回不是布尔值而是表达式判断出结果时的子表达式的值

自增自减运算符:++-

有的时候我们需要这处效果

先用到a的值顺手加1或者顺手减1

注意:

B=++/—a和b=a++/一的区别

前者先运算后赋值后者先赋值再运算

三元运算符:

表达式1?表达式2:表达式3

理解:表达式1如果为真则返回表达式2的值

表达式1如果为假则返回表达式3的值

三大控制语句:

顺序语句:顺序执行

控制结构之单路分支

If(表达式){

代码段;〃可以是一句也可以是多句

表达式为真则代码段执行为假则不执行

而一个表达式被if判断时只有两种可能真/假true/false

代码段:要么整体执行要么不执行

If(表达式){

代码段1;

}else{

代码段2;

如果表达式为真则执行代码段1

如果表达式为假则执行代码段2

Else是在if()的基础上进行判断

If(表达式1){

代码段1;

}elseif(表达式2){

代码段2;

}.

elseif(表达式N){

代码段2N;

}else{

代码段;〃最后这个else不写也行

从前到后逐个判断如表达式n为真则执行表达式n然后跳出执行

题目:

Switch分支语句

Switch(表达式){

Case值1:

代码段1;

Break;

Case值2:

代码段2;

Break;

Case值3:

代码段3;

Break;

Case值n:

代码段n;

Break;

Default:

代码段;

)

注意:switch中的case代码段结束后一定要加break;

如果不加则满足条件的case后面的所有的case都将执行

碰到有要比较范围的用switch不适合应该用if/else

循环结构之while循环

While(){

)

Do(

代码段;

}while();

退出循环:

Break破坏

continue继续

Break在循环体内部跳出本循环或者产终止当前循环

Continue是路过本次循环步骤

For循环

〃for循环在javascriptC语言PHP中java及部分语言中都是非常重要的一个语言结构

For循环三个表达式可以省略吗?

答:for循环的3个表达式可以写0—3个

也就是说3个表达式都可以省略

公鸡5文钱一只母鸡3文钱一只邹鸡3只1文钱100块钱买100只鸡

问公鸡母鸡邹鸡各有多少只?

For循环嵌套时如何在内层结束外层循环?

可以给外层for循环加一个标签

例:

baiji:

for(varg=l;g<=18;g++){

for(varm=l;m<=33;m++){

varc=100-g-m;

if((g+m+c)==100&&(g*5+m*3+c/B)==100){

document.write('公鸡'+g+'只'+

'母鸡'+m+'只'+邹鸡'+c+'只,+,<br/>');

breakbaiji;

}

}

)

函数的概念

函数:是变量的运算关系

程序中的函数是指一段封装的代码段能够完成特定功能

函数的用法:

函数的用法分声明和调用

被调用的函数必须在页面内有声明过程

函数的声明语法:

Function函数名([argl],[arg2]…arg[n]){

代码段运行;

[return返回值];

}

注意:可以有0—N个参数但只有一个返回值

函数的调用语法:

函数名([argl],[arg2]…arg[n]);

函数的返回值:

函数可以有0个或1个返回值没有其他情况

返回值给谁了?谁调用就给谁

函数的执行权与执行权的交回

J$代码由JS引擎来解释执行有几个JS引擎同时工作呢?

答:只有一个单线程运行

所以指令只能一条一条来运行

当函数被调用时JS解释引擎进入到函数内部去工作

即执行权交给函数

函数在2种情况下交回执行权:

碰到return执行权交回

如果没有return,函数的语句运行完毕后执行权交回

一个函数可以有几个return单词?

答:0--多个不同的条件可以执行不同的return语句

函数的return可以执行几次?

答:0—1次

JS中函数的特殊性和PHP比较

在PHP中函数就是语法上的结构体不是一个变量不能被赋值

但是在JS中函数也是一种变量

变量名就是函数名

声明函数

Function函数名(参数)(

函数体

)

===♦

声明了一个叫做“函数名”的变量

并且变量的内容是

(参数)(

函数体

}

函数中变量的作用域

在JS中声明变量必须要有var,不用var带来一个什么样的结果?

变量被污染

注意加与不加var声明变量的区别

JS的系统函数

字符集的概念

字符集就是编码------>字符的映射

1.escape(),将字符转化成各平台通用的unicode编码

varstr="人民币';

varenc=escape(str);

alert(enc);

alert(unescape(enc));*/

2.parselntO把字符串的前缀部分的数字转换成整型数值使用使用

如果首字符不是数字分析出NaN输出来

如果碰到前缀是有小数点的情况直接舍弃小数后面的部分并保留整数

varage=,helloword234);

age=parselnt(age);

alert(age);〃输出NaN

3.parseFloatO把字符串的前缀部分的数字转换成浮点型数值使用

varage=,12.987hello,;

age=parseFloat(age);

alert(age);

4.isNaNO专门用来判断parseFloat()和parselnt()的返回值

为‘非数字'NaN为非数字

varage='999abc';

age=parselnt(age);

if(isNaN(age)){

alertC是非数字');

}else{

alert('你的年龄是'+age);

)

5.isFinite()用来判断一个值是否为有限

对于1/0,-1/0这样的数为无穷大

varage=l/0;

if(isFinite(age)){

alert('你的年龄是'+age);

}else{

alertC你不可能这么大');

}

varage=-l/0;

if(isFinite(age)){

alert(age+'不是正常的数字');

)

6.eval()用来执行一段JS代码

vart=3;

t+=3;

eval(Jt+=3,);

alert(t);

数组的学习:

数组:就是一组变量

数组创建:

vararr=[];〃第一种空数组

varstu=newArray();〃第二种空数组

varair=[,a,,,b,,,c,,,d,];

varstu=newArrayCa','b','c','d');//Array必须大写

创建一定长度但无内容的数组

vararr=newArray(10);

数组每个单元都有一个唯一的“下标/索引”从0编号到length-1

数组单元值的读取

可以凭数组的索引值来确定

即arr[index],

数组的遍历:

vararr=La,b,c,d,e,f,gj;

for(vari=0,len=arr.length;i<len;i++){

document,write(arr[1]+><br/>,);

)

数组的属性:

Length:代表数组的长度

数组length的属性的变化

设某数组length二二N,

如果修改length且length<N则数组被截断后面丢失了

如果length>N,则数组自动补到length个以undefined填充

对象的学习

创建一个对象

〃和创建数组的〃口〃不一样创建对象用0

〃和创建数组直接旋转值不一样创建对象时值前面还要加“属性”

创建语法:{属性1:值1,属性2:值2}

varstu={name:1xiaoming,,

age:22,

number:'007,,

score:99};

对象单元值的引用:

alert(stu['name']);

alert(stu.name);

对象如何遍历????

For(perinobj){

)

varstu={name:'xiaoming",

age:22,

number:'007',

score:99};

for(perinstu){

document,write(stu[per]+“<br/>");

"/这里stu[per]不能写成stu['per'],和直接用属性值不一样

〃这里也不能用stu.per

注意:

在forin结构中循环得到的属性取值时不能用obj.属性的方式

对象单元值的删除:

Deleteobj.属性;

在JS中函数本身就是变量

而数组和对象存储的就是“变量”

对象的某个属性的值没有可能是一个函数呢?可能的

答:可以对象的某个属性对应的值可以是函数

如果是函数时呢这个属性往往也叫“方法”

如果对象的某个方法需要调用自身的某个属性值可以在函数中用一个关键字来代替“自己”

这个对象!!!!!

This对象自己

JS中的内置对象

在JS中所有的变量都可以被JS引擎包装成“对象”来处理

比如:str=,abed';

〃字符本身是没有length属性的

但是如果你去调用str.length,

在你调用的前一瞬间js执行引擎会把他包装一下当成一个对象来处理

并且给这个对象赋了一些属性和方法

对于字符串布尔型数值类型n数组ull,Math

这些变量虽然没有属性

但是在调用的前一瞬间JS会为他们包装一些属性和方法

还有一些系统内置对象是通过new得来的当然也拥有属性和方法

比如日期和时间对象

用的时候必有先通过New来得到一个对象

然后再调用对象的方法和属性

DOM操作

图片切换的相册效果

新闻/军事/时尚-------->tab切换效果

注册表单检查“用户名没输入”等效果

特效就是DOM操作的具体应用

DOM操作就是JS来写html代码

节点/元素/标签

操作DOM对象?

对DOM的操作:

修改------->先找到这个节点

删除-------〉先找到这个节点

添加------->先造出一个节点然后找到要插入的位置找节点定位

节点的“查找”最重要!!!!

document.getElementByld:根据id查找节点返回"节点"本身

document.getElementsByTagName;通过标签TagName来查找节点返回数组

document.getElementsByName;通过name属性来查找节点返回数组

注意:早期浏览器中认为name只出现表单中

因此document.getElementsByName只对表单中的元素发挥作用

后来部分浏览器把name属性扩展到一般的元素如div

但是IE没变还是只能对表单使用ByName

因此出于兼容性我们只应对表单使用ByName这样才不会出问题

DOM中查找节点的思路:

由大到小来寻找个别情况也可能由子到父

由大到小:通过下面3方法来进行大到小的定位

document.getElementByld:根据id查找节点返回"节点"本身

document.getElementsByTagName;通过标签TagName来查找节点返回数组

document.getElementsByName;通过name属性来查找节点返回数组

如果还没有查到想要的结果还可根据前面已经找到的节点再次定位

继续查找

1.查找子元素

chiIdNodes/chiIdren[index]

2.查找父元素

node.parentNode----------->来获取父元素

firstChild,lastChild

3.nextSibling,previousSibling兄弟元素

上面四个属性容易受“空白”文本的影响建议不用

4.如果查到某个元素仍然非常大这个时候

我们还可以利用getElementsByTagName来进一步筛选

注意:

对于元素对象和document对象相比

元素对象只能利用这一个函数继续筛选

所有的元素都能够用style----css来控制

所有的元素都有一个属性或者叫子对象--------style对象

节点的增加:

你要增加什么结点:

增加在哪儿?

假设在body的containdiv里增加一个p标签

步骤:

1.先造一个P结点

2.添加进行

创建元素节点:

Document.createElement()

创建文本节点:

Document.createTextNode()

给某元素插入一个子元素并插在最后

节点.appendChiId(追加子元素);

不仅可以创建节点还要以克隆/复制节点

oldNode.cloneNode(true/false);

分别代表克隆节点并同时克隆/不克隆子节点

删除节点:当你找到某个节点nodeN为例你是无法调用nodeN.xxxO方法删掉

必须得站在父节点的高度通过removeChild才能删除

父节点.removeChiId(待删除的节点)

节点的替换:

先创建一个新节点准备再找到要被替换的旧节点

然后到旧节点的父点上去站在父节点的高度上

父节点.replaceChild(新节点旧节点)

直接插入html内容【不是w3c的标准但是主浏览器都支持而且非常好用】

innerHTML=属性

节点的innerHTML属性是可读可写

读:是把某个节点的内部的html代码读取出来

如果赋值则相当于把节点的html代码更新

修改节点的属性

在节点中一种直接写在标签内部的属性见而下的蓝色部分示例

<imgsrc="/images/aa.jpg"alt="abc"title="xxx'/>

<inputtype="text"value="内容",name="cont'7>

<inputtype="checkbox"value="台球"checked="checked“class="aaa”/>

注意:有一个例

控制元素的类名称的时候不用obj.class而是用obj.className

还有一处是体现css里的属性

Style各种css属性如width,height,border,fontSize

注:

在css中的属性与js中控制相应的属性名称有一个对应关系

如background------->style.background这种情况两者相同

如margi-left,font-size这种中间有的css属性用js来控制时

则属性性变名marginLeft,fontSize

规律为:把css属性中的"-“去掉并把后的首字母大写

D0M事件

D0M事件就是指当页面上发生某一件事时候激发某一函数相当于“监听/解发设备”

比如:

元素被单击时用onclick来激发一个函数

标变化引起的比如经过单击双击

键盘事件

元素失去焦点时用onblur事件

表彰被提交时用onsubmit事件

D0M事件如何声明?

直接在元素标签中声明

<inputtype="text"name二"a“onclick="/>

给事件属性赋上一个函数变量

例:

Inputobj.onclick=fun;

其中onsubmit事件比较特殊

在〈formonsubmit=,,return函数名”>

函数中要有returnfalse;

BOM模型

BOM浏览器对象模型

DOM------->document

BOM------>window

Document实际上是window的一个子对象

Window对象的子对象介绍

Window,navigator:浏览器的相关信息

Window,history:浏览历史记录控制前进后退

Window,screen:分辨率相关信息

Window,location:地址栏可以控制页面跳转

Window,document:

Window.document为什么之前的学习中直接document???

答:因为window对象是最大一个对象其他对象都在其内部

因此

写document默认就是在是全局的window下面属性或子对象

Window对话框:

Alert();对话框

Confirm();确认框

Prompt();

Window定时器:

Window.setTimeout(,事件,,时间);

是指:经过指定时间后执行一次

Window.clearTimeout();

Window,seterlnterval(,事件',时间);

是指:每隔指定时间就执行一次事件

Window,clearinterval()

清除window定时器

在创建定时器的时候把创建结果赋给一个定时器变量然后再调用函数即可

clearTimeout(clock)或clearinterval(clock);

五子棋业务逻辑分析:

有一个棋盘

点击棋盘格子时格式要显示棋子

横向、纵向、斜向某种颜色够五颗时判定胜负

第1步:棋盘

建立一个15*15(td)的表格再给table加一个背景就可以了

第2步:下棋

点击格子时即td时给td加一背景(黑棋或白棋)

当点击时还需要判断该td上是否已有棋子

完成以上2步基本的5子棋功能完成了

技术分析:

DOM事件

Js操作DOM及css

For循环遍历

Ifelse

Td对象加一个属性标志是否有棋子

==============再智能一点加上判断胜负的功能===============

==============学ajax后、在线5子棋=========================

正则表达式:

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

邮箱验证

用户名验证

替换字符串的某一部分

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

正则表达式:

规则表达式“一种有规律的字符串的描述”正则表达式是一门独立的知识同样的一段描述

比如:对于email的匹配表达式

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

学习正则表达式

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

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

在js里用正则表达式的execO函数用来查找匹配的选项并把查到的值取出

字符串应用正则:

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

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

string,replace(reg,"newstr');正则替换

string.split(reg);正则拆分

正则表达式3句话

要找什么字符

从哪找?

找几个?

1.要找什么字符?

字面值‘hi'直接找'hi'

字符集合来表示:[abed]指匹配abed中的任意一个

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

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

例:

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

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

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

补集的形式表示字符集合

例:

[0-9---------------->「0-9]

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

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

L6任意字符•不包括换行符

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次

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

在上面的“个数”修饰符后面加?则为非贪婪模式尽量少找

模式

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

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

g--------〉全局模式globle

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

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

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

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

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

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

正向预查:(?=待查字符)字符后为‘待查字符'则返回前面字符

负向预查(?!待查字符)找到的是单词为'待查字符'的后面的部分

反向引用/兵向引用

子表达式:

Exec为例

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

1

2

3

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

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

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

JS中的事件

行为、样式与结构相分离

<scripttype=Mtext/-iavascriptn>、

/*

行为,结构与样式分离的页面

*/

window.onload=function(){>

document.getElementByld(1schDO1*).onclick=function](){

alert(*adfdf*);

}

}>

</script>

<styletype=**text/css">、

#school{

width:300px;I

height:200px;[

background:gray;

}J

</style>

</head>

<body>

<divid=Mschooln>

</div>

</body>

</html>

绑定事件的三种方式

L直接写在html元素中声明

<divid="school"onclick="t();〃>

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

在全局范围内执行

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

2.第二种绑定方式

DOM对象.onclick二function(){}

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

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

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

例:onclick=function(){funlO,fn2();}

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

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

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

DOMlev3的事件绑定标准

添加和去除监听事件

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

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

注意:

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

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

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

去除绑定

removeEventListener(,事件,,函数);

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

attachEvent('on事件',函数);〃事件要加on

detachEvent("on事件,,函数);

总结:

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

函数名不同

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

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

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

事件的捕捉与冒泡模型

在w3c的模型中

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

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

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

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

事件对象的概念:

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

例:XX.onclick=function(ev){alert(er)}

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

对于1E当事件发生的瞬间事件对象赋给

事件的中断

如何中断事件的传播????

在w3c事件.stopPropagation();

在IE事件.cance1Bubb1e=true;

取消事件的默认效果

事件对象.preventDefault0;〃阻止事件的默认效果w3c方法

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

JS之作用域链

作用域链

原型链

A0上有哪些属性

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

参数

局部变量声明

函数声明

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

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

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

其次分析var声明

以varstr='hello';

把str声明为A0的属性值为undefined;

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

最后分析函数声明

Function函数名(){

}//有函数名

函数声明假设函数名为fn

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

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

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

此时就是普通的赋值过程

例:varfn=function(0{)这是一个函数表达式

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

而函数声明的优先级主

This与a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论