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