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