函数的this指向

 函数的 this 指向    (面试必问)
              每一个函数内部都有一个关键字是 this
              重点: 函数内部的 this 只和函数的调用有关, 和函数的定义方式没有任何关系
              换句话说: 函数内部的 this 指向谁, 取决于函数的调用方式

 刚才我们说的都是函数的基本调用方式里面的 this 指向
          我们还有三个可以忽略函数本身的 this 指向 转而指向其他地方的 三个方法
           
  call
                  这个方法是附加在函数调用后面使用, 可以忽略函数本身的 this 指向
                  语法: 函数名.call(新的 this 指向, 传递给函数本身的参数1, 传递给函数本身的参数2, 传递给函数本身的参数3, ...)
              
             
apply
                  这个方法是附加在函数调用后面使用, 可以忽略函数本身的 this 指向
                  语法: 函数名.apply(新的 this 指向, [传递给函数本身的参数1, 传递给函数本身的参数2, 传递给函数本身的参数3, ...])
              
             
bind
                  这个方法是附加在函数调用后面使用, 可以忽略函数本身的 this 指向
                  bind 和 call/apply 有一点小区别, 就是 bind 不会立即执行函数, 而是返回一个已经改变了 this 指向的函数
                 语法: var newFn = 函数名.bind(新的 this 指向);      newFn(传递函数需要的参数)
         
              面试题:
                  1. 请你简单描述一下 函数 内部 的 this 指向问题
                  2. 如何修改函数内部 this 指向?
                  3. call / apply / bind     三个方法的区别

什么是 ES6
               其实就是 JS 发展过程中的某一个版本号
          
           举例:

  •                微信 在最初的版本中并没有所谓的 微信支付
  •                但是随着时间的流逝, 微信也在一版一版的迭代更新
  •                然后微信在更新的过程中的某一个版本, 推出了 微信支付

          
           JS:

  •                JS 在最初的版本中并不是像现在一样具备很完善的功能
  •                但是随着时间的流逝, JS 也在 一版一版的迭代更新
  •                然后再 版本号为 ES6 这一个版本的时候, 推出了很多好用的而且常用的 功能
  •           
  •                但是后续也还有新的版本推出, ES7 ES8 ES9...
  •                因为后续版本更新的内容每年一次, 但是内容方法不多, 所以也没有人特别记忆这个方法是 ES7还是ES8
  •                我们统称为 ES6 的方法, 或者 ES6+ 的方法
  •           
  •                再 ES6 刚出的时候, 因为浏览器是浏览器厂商生产的, 所以有些功能浏览器还暂时不支持
  •                所以当时写的时候还需要考虑兼容性, 比如当前浏览器是否支持 ES6
  •           
  •                但现在基本所有主流浏览器都全面支持 ES6 了

         
           延伸一道面试题:
               ES6 新增的方法中, 你了解过那些 

let与const 关键词   延伸一道面试题:ES6新推出的 let和const 这两个方法与之前的var 有什么区别

        以前声明变量一直使用的var 关键字来声明变量
        在ES6的时候多了两个关键字 let/const 也是用来声明变量

        语法 let 变量名;  const 变量名

        和var 的区别
        1.let 和const 不允许重复声明变量
        2.let和const 声明变量的时候不会出现变量提升
        3.let和const 声明的变量会被所有的代码块{} 限制作用范围

        let 与 const的区别
        1.let声明的变量的值可以改变,const声明的变量的值不可以被改变,所以我们以把const声明的变量叫做”常量“
        2.let 定义的变量 可以不赋值,但是 const 定义的变量必须赋值

        变量提升:
        在定义变量前去使用这个变量时,如果是通过var 这个关键字定义的变量,那么就会出现变量提升
        也就是说能用这个变量,但是没有实际的值,得到的值为 undefined
        但是如果是通过 let 或者 const 定义的变量 则不会出现变量提升,也就是说在定义前使用变量,浏览器会报错

 箭头函数
               箭头函数是  ES6 里面一个简写函数的语法方式
               重点 箭头函数只能简写 函数表达式, 不能简写声明式函数
         
               语法: (函数的形参) => {函数体内要执行的代码}
         
           箭头函数的特殊性    (一道面试题: 箭头函数与普通函数有什么区别?)
               1. 箭头函数内部没有 this, 箭头函数的 this 是书写时所在位置的 this 值
               2. 箭头函数内部没有 arguments 这个参数集合
               3. 如果形参只有一个的时候, 小括号可以不写, 如果有多个形参或者没有形参的时候, 小括号必须写
               4. 函数体只有一行代码的时候, 可以不写 {}, 并且会自动 return

  解构赋值
         就是快速的从对象或者数组中取出成员的一个语法方式
             解构赋值的注意点!
                {} 是专门解构对象使用的
                [] 是专门解构数组使用的
                两个不能混用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值