JS部分知识点

JavaScript简介

JavaScript是脚本语言;

JavaScript是一种轻量级的编程语言;交互的逻辑都是JavaScript驱动的;

ECMAScript标准就可以理解为JavaScript标准;

JavaScript的代码通常放在

标签中,也可以嵌在其他地方;

包裹的代码就是JavaScript代码,将直接被浏览器执行;

要把写的JS代码单独放在一个地方,然后在HTML中引入这个文件,这样做的便利之处:

1.比较便于进行代码的维护,可以多界面引用同一份JS代码;

2.可以在同一个界面引入多个JS文件;

3.在多次编写的情况下,浏览器依次执行;

4.script的标签type的默认就是JavaScript;

JavaScript的运行和调试

在HTML界面中引入JavaScript,这样浏览器在加载HTML文件的时候,就会执行JavaScript代码;

后面需要架设一个web服务器,用http://开头的地址来正常执行所有的JavaScript代码;

可以利用F12打开浏览器的调试工具,点击控制台,然后在这里输入JavaScript代码,点击运行就可以得到变量的值;

JavaScript的基本语法

格式

语法上与java相似,每个语句以“;”结束,语句块用{ }。

格式: 定义变量 变量类型 变量名 = 变量值;

数据类型和变量

数值,文本,图形,音频,视频等都属于数据类型;

常见数据类型:

1,Number :可以为整数,浮点数,科学计数法,负数,NAN无法表示的数,Infinity表示无限大的数;

2.字符串:用单引号和双引号括起来的任意文本,如果想要把引号也打出来,可以使用转义字符;

3.布尔值:true,false;

4.比较运算符:将Number作比较时,可以通过比较得到一个布尔值,“ = ”表示赋值,“ == ”表示等于(只要值一样就会被判断为true),“ === ”表示绝对等于(只有类型一样,值一样才会是true);需要注意的是NaN不等于任何一个数,包括它自己;浮点数的比较要注意,比较的是两个无限循环小数的差是不是小于某个阈值;

5.null表示一个空的值,underfined表示值未定义,只在判断函数参数是否传递的情况下有用;

6.数组,JavaScript中的一个数组可以放多种类型,数组中的元素可以通过索引来访问,数组用 [ ]来表示,元素之间用,分隔 ;

7.对象,JavaScript中的对象是由一组键值对组成的无序集合,其中键都是字符串类型的,值可以使任意的数据类型,键又称对象的属性可以通过,对象.属性名来调用。

严格检查模式

使用var声明的变量不是全局变量,在strict模式下,强制通过var声明,没有使用var的会导致运行错误,启动strict的方法是在JavaScript代码的第一行写上‘use strict’ ;

字符串

1.转义字符\‘ ’,\n换行,\t table

2.多行字符串编写:”~“将多行字符串包裹;

3.模板字符串,相当于+,格式为${ 属性名 };

4.操作字符串:

(1)获得字符串的长度,属性名后面加上 .length;

(2)获取指定位置的字符,超出下标的话不会报错,一律返回underfined,字符串是不可以变得,但是如果对字符串的某个索引赋值,不会报错也不会有任何效果。

(3)字符串的大小写转换,toUpperCase()方法全部变成大写,toLowerCase()方法全部变成小写;

(4)获取字符串中指定字符第一次出现位置的下标,用indexOf(‘字符‘)方法,如果没有的话返回结果为-1;

(5)返回指定索引区间的字串,用substing(开始索引,结束索引)方法,

数组

(1)用.length直接获取长度,也可以给定数组的长度,给定数组长度如果较小的话,会导致元素的丢失,如果给定的数组长度过大的话,会补充为未定义的元素;

(2)通过索引可以单独改变某个元素的内容;

(3)indexOf方法可以用来搜索指定元素的位置();

(4)截取Array的一部分,返回一个新数组,slice()方法的两种使用方式,第一种(开始索引,结束索引),第二种(开始索引),也可以利用这个方法进行复制一个新的数组;

(5)操作尾部元素,push方法是将数据添加到尾部,pop方法是将尾部的元素取出,如果不找承接的东西,相当于去除;

(6)操作头部元素,unshif方法是将数据添加到头部,shif是将头部的元素取出;

(7)sort()方法可以修改当前Array中的元素位置,直接调用时,按照排序方式;

(8)用reverse()方法可以将数组中的元素交换位置;

(9)splice()方法可以删除若干元素,然后也可以添加若干元素,使用方法是splice(开始的索引,删除的元素个数,添加的内容);

(10)数组的拼接,可以使用concat()方法;

(11)连续符,使用join('指定字符')方法;

对象

(1)定义方法: var 对象名{ 键值对,键值对,键值对 };

(2)获取对象的属性,直接用对象调用;

(3)以为JavaScript的对象是动态的,所以可以自由给对象添加或者删除一个属性,在对象前面加delete这个关键字;

(4)在属性和对象之间用关键字in判断这个属性是否存在;

(5)判断一个属性是自身拥有而不是继承得到的,可以使用hasOwnProperty()方法;

流程控制

输出语句相当于 console.log( ) ;

 

 数组也是一个对象,索引是它的属性;

Map和Set

Map用键值对的方式储存数据,初始化的时候需要一个二维数组,或者直接初始化一个空,一个key只能对应一个value值,添加键值对的时候,前面写名称,后面写值。

Set无序不重复的集合,用has(值)方法可以用来确定是否含有某个值。

lterator遍历Map和Set没办法使用下标。

需要注意的点

let声明的是块级作用域,var声明的是函数作用域和全局作用域;

let声明的变量不会声明提升,var会声明提升;

let不能声明同名变量,var可以;

在JS中函数的实例是对立的对象,可以有自己的方法和属性,可以作为参数传递;

在写HTML中写类似java的一些东西;

arguments是函数运行时的实参列表;

getElementByld返回的是ID相照应的标签;

getElementByTagName返回的是伪数组的形式;

方法里的属性引用基本上用单引号,想要直接输出的用到双引号;

先通过相应的方法得到之后,需要达到效果的时候,对相应的内容进行操作;

querySelector返回指定选择器中指定对象,如想要得到第一个就加上一个first,想得到所有就返回all,里面的选择器要加上符号;

获取body标签,可以直接方法到body,方法到HTML是用documentElement;

console既可以表示输出,又可以用来创建对象,创建对象的两种方式(对象名.uname),(对象名[ 'uname' ]);

调用一些方法对象的时候同样可以用这两种方法;

也可以用new Object()方法创建对象,然后在利用等号赋值的方法 添加属性和方法;

innerText将元素的内容改变;

获取属性值和自定义属性值,getAttribute是获取属性值,setAttribute是设置属性值;

document.write()和element.innerHTML以及document.creatElement()的区别;

1.document.write是直接将内容写入界面的内容流,但文档执行完毕,它会导致文档界面全面重绘;

2.innerHTML是将内容写入某个DOM节点中,不会导致界面的全面重绘;

3.innerHTML创建多个效率更高(不要凭借字符串,要用数组的形式拼接),但结构会稍微复杂一些;

4.creatElement()创建多个元素效率稍低一点点,但是结构更加清晰;

JS中常见的事件

鼠标移动事件

onmousemove(event):在(event)前面写的是需要监听移动事件的对象;

onmouseover:鼠标悬停事件,当鼠标移上去之后会引发的事件,this写在那个标签里就代表那一个标签,调用样式表里的属性的时候,把中间的斜杠删掉;

onmouseout:鼠标移开事件,当空间从事件上移开的时候,展示出来的效果;

鼠标点击事件

onclick:当鼠标被点击之后会产生的效果;

 

加载与卸载事件

只能写在body或image里,加载事件(onload)在整个界面完毕之后发生,卸载事件(onunload)是在界面关闭时发生;

键盘事件

onkeypress按下键盘松开之后会发生的事件,onkeydown按下按钮发生,onkeyup松开按键;

提交和重置事件

提交事件(onsubmit,必须在表单中实现)是点击提交按钮后发生,重置事件(onreset)是点击重置按钮后发生;

选择与改变事件

onselect:只能用于输入框,当选择输入框中的文本时发生;

onchange:用于select和文本框,对于下拉框是在选项发生变化的时候发生,对于文本框是在文本框的内容发生变化并且失去焦点时发生。

DOM操作

创建

三种创建方式1.document.write;2.innerHTML;3.creatElement;

两种增加方式:1.appendChild;2.insertBefore;

一种删除方式:1.removeChild;

修改的是四部分:

1.修改元素属性:src;href;title等

2.修改普通元素内容:innerHTML,innerText;

3.修改表单元素:value,type,disbled等;

4.修改元素样式:style,className;

1.DOM提供的API方法:getELementByld,getElementsByTagName 古老方法不推荐使用;

2.H5提供的新方法:querySelector,querySelectorAll提倡;

3.利用节点操作获取元素:父(parentNode),子(children),兄(previousElementSibling,nextElementSibling)提供;

属性操作

主要针对自定义属性:

1.setAttribute:设置dom的属性值;

2.getAttribute:得到dom的属性值;

3.removeAttribute移除属性;

事件操作

给元素注册事件,采取 是事件源.事件类型 = 事件处理程序;

事件委托

addEventListener()+e.targetd;

禁止右键,禁止全选,

常见的鼠标事件

图片跟着鼠标走

大体实现思路为设置绝对定位,获得图片的坐标,添加鼠标监听,然后将定位的位置随着鼠标移动而移动;

加监听格式为document.addEventListener(‘监听方式’,fuction(e));

循环播放图片

实现思路可以根据一段内容的变化设置循环;

设置倒计时

用到了查和改的内容;

clearinterval函数可以停止计时;

跳转界面

用到了form的action属性,将表单提供过去之后,要先去除问号,然后截取需要的代码;

history

控制是否为前进一页,是否为后退一页;

拖动窗口

事件冒泡和事件捕获

这两个概念是为了解决事件流,即事件发生顺序的问题;

事件冒泡的传播顺序是从最内层慢慢向外拓展,鱼吐出的泡泡慢慢向上漂;

事件捕获是从最外层开始,慢慢向里面延伸;

addEventListener方法用一个特定的元素绑定一个事件处理函数,有三个参数(event,funtion,useCapture),第一个参数时需要绑定的事件,第二个参数时触发事件后要执行的函数;第三个默认是为false,表示在事件冒泡的阶段调用事件处理函数,如果参数为true,那么就会在捕获的阶段处理函数;

阻止事件冒泡的两种方式,方式一:event.stopPropagationg() 方式二:return false;

两种方式都阻止了事件往上冒泡,return false同时阻止了事件本身;

如果两种方式同时存在于一个大盒子里面,那么事件捕获的优先级要比事件冒泡的优先级要高。

同为事件捕获的话,在外层的盒子效果先被触发;

同为事件冒泡的话,在内层的盒子效果先被触发。

闭包

访问变量的权利是由内到外的,闭包是为了解决不同函数中变量的调用问题,闭包的本质是在一个函数内部创建另外一个函数;

闭包的三个特性:

1.函数嵌套函数;

3. 参数和变量不会被垃圾回收机制回收。

2.函数内部可以引用函数外部的参数和变量;

私有变量可以用到闭包;

变量如果没有声明var关键字,那么该变量就是全局变量,即使是在函数内部定义的;

JavaScript内嵌函数,嵌套函数能够访问上一层的变量,如果我们能够访问到子类方法,那么我们就能够使用父类变量。

闭包是一种私有变量的保护机制,在函数执行时形成私有的作用域。

作用域

在JavaScript中,对象和函数也是变量;

作用域为可访问变量,对象,函数的集合;

作用域在函数内修改;

局部作用域

变量在函数内声明,变量为局部作用域;

局部变量,只能在函数内部访问;

局部变量在函数开始执行时创建,函数执行完之后局部变量自动销毁;

全局变量

网页中所有的脚本和函数均可以使用;

如果在函数内部没有声明var,那么这个变量为全局变量;

函数参数

函数参数只能在函数内起作用,是局部变量;

在HTML中,所有全局变量都会变成window变量;

全局变量,函数和局部变量能够与window对象的变量和函数相互覆盖;

this

关键看调用;

其中this指定的内容会随着执行环境的改变了发生变化;

在方法中,this表示该方法所属的对象;

如果单独使用的话,表示全局对象,在浏览器中window就是全局对象(object Window),在严格模式下也是指向window;

在函数中,this表示全局对象;

在函数中,在严格模式下,this是未定义的(undefined);

在事件中,this表示接收事件的元素;

类似call()和apply()可以将this引到任何对象;

JavaScript中函数也是方法,对象则有方法,apply和call就是函数对象的方法,他们允许切换函数执行的上下文环境,及this绑定的对象;

回调函数

有些库中的函数想要实现相关的功能,需要首先传过来一个函数,传过来这个函数就被称为回调函数;

两种回调方式,一种是阻塞式回调,一种是延迟式回调。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值