JS改变this指向
call方法
函数名.call(this指向的新对象, 参数1, 参数2)
对象方法.call(this指向的新对象, 参数1, 参数2)
apply方法
函数名.apply(this指向的新对象, [参数1, 参数2] )
对象方法.call(this指向的新对象,[参数1, 参数2] )
bind方法
var 新函数=函数名.bind(this指向的新对象)
新函数(参数)
示例---充电宝
ES6新特性
let和const关键字
- let :块变量
- const :常变量
- 区别:
1.没有变量提升,没有预解析
2.let 和 const 不允许重复声明变量
3. let 和 const 声明的变量会被所有代码块限制作用范围
4. let 和 const 的区别
箭头函数
- 原:var fn=function(){}
- 现:var fn=()=>{}
- 当参数只有一个时,括号可以省略 var fn=m=>{}
- 当赋值语句只有一条时,中括号可以省略 var fn=()=>console.log('')
- 当赋值语句只有一条,且是return语句时,中括号和return皆可省略 var fn=m=>100
函数传递参数的时候的默认值
ES5: function fn(m){
m ||100
} //表示m的默认参数值为100
ES6:function fn(m=100)
解构赋值
- 作用:快速的从对象或者数组中取出成员的一个语法方式
- 对象:
const obj={
name='jack'
age=18
gender='男'
}
let{name,age,gender} = obj
- 数组:
const arr=[1,2,3]
let[a,b,c] = arr
- 函数返回数组
function fn(){
return [2,3]
}
let a,b;
[a,b]=fn()
console.log(a,b)
//2 3
- 交换变量
模板字符串
展开运算符
- 数组
let arr=[1,2,3]
let arr1=[4,5]
let arr2=[...arr,...arr1]
let arr3=[...arr,4,5]
console.log(arr2)
//1,2,3,4,5
- 对象
let obj={
name:'jack',
age:18
}
let obj1={
...obj,
gender:'男'
}
console.log(obj1)