改变this指向和es6新特性

103 阅读2分钟

改变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 关键字

  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     

二、箭头函数

箭头函数

 functon fn(){}   声明式
 var fn = function(){}  函数表达式
 

作用:简化函数(匿名函数)的书写

  语法:
      ()=>{}
      function(){
      }

  简写: 

  1. 形参只有一个, 括号可以省略
       (m)=>{}
       m => {}

  2. 函数体只有一行代码 大括号省略
       () => {console.log('>>>')}
       () => console.log('>>>')
       ()=> {return 100}

  3.只有一行代码,并且代码是return语句,大括号和return都可省略
       () => 100 

箭头函数this指向问题

  1. 在事件处理函数中 this -> 事件源
  2. 箭头函数中this指向:应用上下文中this对象

解构赋值

快速从对象或者数组中取出成员的一个语法方式

   let { name, age } = obj
   注: 大括号中变量名必须与对象属性名相同

模板字符串

  let str = 'helloworld'
  let str = "helloworld"
  let str = `helloworld-${变量}`  模板字符串

展开运算符

 let arr = [1,2,3]
 ...arr  -> 1, 2, 3
 作用: 数组合并

对象字面量简写

对象属性名和值变量名相同时,只写一个