解构赋值
不能对undefined和null解构
在函数 解构 的 参数 中 如果不传参数,默认是 undefined
数组解构赋值:
用[]表示,中间加变量名,表示数组中每一个元素
例如:[a,b,c]=[1,2,3]
[a,,c]=[1,2,3] c表示3
[,,c]=[1,2,3] c表示3
数组也可以看成一个键为下标的对象
对象解构赋值:
用{}表示,中间用对象的键:变量名来表示,如果变量名和键一样,可以省略 :变量名
arguments关键字:
表示当前函数的所有参数,是一个形似数组的对象,可以用 ...变量名表示,也可以使用 for ... of 迭代
this指向问题
1.在 js 上下文中 指向 window ,上下文指script标签中的内容
2.在 普通函数中 ,不在严格模式下 this指向 window ,在严格模式下,指向 undefined
3.在 构造函数中,this 指向当前对象
4.在 箭头函数中,指向父级作用域this指向的对象
函数传参:
函数在传参的时候,如果不传,则为undefined,此时如果有默认值会取默认值,注意:默认值只有
在实参为undefined的时候才会取默认值
构造函数:
构造函数本身和普通函数没有区别,构造函数通过new来构建对象,构造函数的参数就是属性,给属性
赋值需要添加this加以区别,方法的定义前面也要加this 例如:this.sum=function(){}
不定项参数:
在方法的参数末尾 加...变量名,这个表示不确定有几个参数,可以传入多个,这个变量为数组
展开运算符…:
数组或者对象在 解构 的时候 可以使用展开运算符,用来包揽后面的所有值,只能出现在尾部,并且只能有一个
在合并的时候,可以有无数个 合并数组 :
let arr=[1,2,3]
let arr2=[4,5,6]
let newarr=[...arr,...arr2];
合并对象操作与之相同,要注意如果键相同会覆盖
改变this的指向:
apply(要指向的对象,[]):
call(要指向的对象,...参数)
bind(要指向的对象,...参数):注意这个方法是返回该函数对象 不会立即调用函数,需要在后面加()才可以调用
原型链 prototype (Java中的多例,js中的原型)
原型链中的方法相当于Java中的成员方法,只能对象调
原型链有点像 Java 中的继承关系
原型链中的this 指向 调用它的对象
作用:扩展方法
1.使用:函数.prototype.方法名=function(){}
示例
Date.prototype.format=function (){
console.log("s")
}
相当于给Date的对象扩展了一个 format 方法
可以一次定义多个方法 :
函数.prototype={
format:function(){
}
}
注意:只有自己的构造函数 才可以一次定义多个 方法
2.使用:对象.__proto__.方法名=function(){}
注意这种方法只能给此对象添加方法,这个构造函数的其他对象不共享
window 定时器:
setTimeout(fn,间隔的时间,毫秒):
间隔一段时间后执行一次,执行完结束
使用此方法实现轮询:
let b=0;
function a(){
b++;
console.log("---")
let m=setTimeout(a,1000)
if (b==10)clearTimeout(m)
}
setTimeout(a,1000)
setInterval(fn,间隔的时间,毫秒):
每间隔一段时间执行一次,要停止的话,使用 clearInterval(定时器的返回值)
location 获取 网址(URL)的组成:
完整的网址由 协议 、主机名(域名) 、端口号、请求地址、请求参数、锚点组成
用location的属性获取URL各个组成部分:
location.href: 获取完整的 URL
location.protocol : 获取协议
location.hostname : 获取主机名
location.port : 获取端口号
location.pathname : 获取请求地址
location.search : 获取请求参数
location.hash : 获取锚点
document 操作:
选择器:
document.getElementById() :根据 id 选择 元素
document.getElementsByTagName() : 根据 标签名 获取 元素,获取到的是形似数组的对象
document.getElementsByClassName() : 根据 class 获取 元素,获取到的是形似数组的对象
document.getElementsByName() : 根据 name 获取 元素,获取到的是形似数组的对象
操作元素的属性:
元素.属性 可以获取到元素自带的属性 修改可以直接赋值修改
如果上面操作拿不到的属性可以用以下方法获取和操作:
元素.getAttribute( key ) :获取属性名为key的属性值
元素.setAttribute(key,value) : 设置(修改) 属性
元素.removeAttribute(key) : 删除 属性名为 key 的属性
css选择器
document.querySelectorAll() : 获取匹配到的所有元素
document.querySelector() : 获取匹配到的第一个元素
注意:使用这个选择器选择 id 需要在前面加# 选择 class需要加 .
可以使用 css 语法来获取元素,前面可以加父级标签,这样就更能准确的获取元素