改变this指向
this指向
- 事件处理函数中的this --> 事件源
- 普通函数中的this --> window
- 定时器this --> window
- 自调用函数this --> window
- 对象Object方法中的this --> 当前对象 --> 调用该方法引用变量指向的对象
改变this指向
1.函数方法call方法
- 函数名.call(this指向的新对象,参数1,参数2...)
- 对象方法.call(this指向的新对象,参数1,参数2...)
2.apply方法
- 函数名.apply(this指向的新对象,[参数1,参数2...])
- 对象方法.apply(this指向的新对象,[参数1,参数2...])
3.bind方法
- var 新函数 = 函数名.bind(this指向新对象)
- var 新函数 = 对象方法.bind(this指向新对象)
- 新函数(参数1,参数2)
es6新特性
一、let 和 const 关键字
-
let 和 const 关键字
声明变量 var num let num const num -
区别
let 和 var
1.let没有变量提升(预解析) let声明变必须先定义再使用
console.log(num)
var num = 100
2. let声明的变量,不能重复声明变量
var num = 100
var num = 200
3. let具块作用域
全局作用域
局部作用域
块作用域 let
const 和 let
const声明的变量称为常量,只能赋值一次
const num = 100
num = 200 x报错
3. 应用场景
1.考虑兼容问题
使用var
2. 变量可以多次改变值
let
3. 变量只赋值一次后,不再改变
const
二、箭头函数
箭头函数
functon fn(){} 声明式
var fn = function(){} 函数表达式
作用:简化函数(匿名函数)的书写
语法:
()=>{}
function(){
}
简写:
1. 形参只有一个, 括号可以省略
(m)=>{}
m => {}
2. 函数体只有一行代码 大括号省略
() => {console.log('>>>')}
() => console.log('>>>')
()=> {return 100}
3.只有一行代码,并且代码是return语句,大括号和return都可省略
() => 100
箭头函数this指向问题
- 在事件处理函数中 this -> 事件源
- 箭头函数中this指向:应用上下文中this对象
解构赋值
快速从对象或者数组中取出成员的一个语法方式
let { name, age } = obj
注: 大括号中变量名必须与对象属性名相同
模板字符串
let str = 'helloworld'
let str = "helloworld"
let str = `helloworld-${变量}` 模板字符串
展开运算符
let arr = [1,2,3]
...arr -> 1, 2, 3
作用: 数组合并
对象字面量简写
对象属性名和值变量名相同时,只写一个