改变this指向事件:
+ 事件处理函数中this -> 事件源
+ 普通函数中this -> window
+ 定时器this -> window
+ 自调用函数 this -> window
+ 对象Object方法中this -> 当前对象-> 调用该方法的引用变量指向的对象
改变this指向
函数方法call方法
函数名.call(this指向的新对象,参数1,参数2...)
对象方法.call(this指向的新对象,参数1,参数2...)
apply方法
函数名.apply(this指向新对象,[参数1,参数2...])
对象方法.apply(this指向新对象,[参数1,参数2...])
bind方法
var 新函数 = 函数名.bind(this指向新对象)
var 新函数 = 对象方法.bind(this指向新对象)
新函数(参数1,参数2)
let和const关键字:
1. let 和 const 关键字
声明变量
var num
let num
const num
2. 区别
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
箭头函数:
箭头函数
function fn(){} 声明式
var fn = function(){} 函数表达式
箭头函数this指向问题
1. 在事件处理函数中this->事件源
2. 箭头函数中this指向 应用上下文中this对象
应用上下文this对象
作用:简化函数(匿名函数)的书写
语法:
()=>{}
function(){
}
简写:
1. 形参只有一个, 括号可以省略
(m)=>{}
m => {}
2. 函数体只有一行代码 大括号省略
() => {console.log('>>>')}
() => console.log('>>>')
()=> {return 100}
3.只有一行代码,并且代码是return语句,大括号和return都可省略
() => 100
函数传递参数的时候的默认值:
函数默认值
ES5 实现方式
m = m || 100
ES6 实现方式
function fun(m = 100){}
解构赋值:
解构赋值
快速从对象或者数组中取出成员的一个语法方式
let { name, age } = obj
注: 大括号中变量名必须与对象属性名相同
展开运算符:
let arr = [1,2,3]
...arr -> 1, 2, 3
作用: 数组合并
对象字面量简写:
对象字面量简写
对象属性名和值变量名相同是,只写一个