this 关键字[Javasript]

时间:2019-09-11 发布者: 访问量:3139

  1. 面试会问啊! 总有一些面试官喜欢问你一段不可能这么写的代码。 看一道经典且古老的面试题(学完本文后,末尾会有一道更复杂的面试题等着你哦!)

    代码如下:

    var a = 5; var obj = { a : 10, foo: function(){ console.log(this.a)
      }
    } var bar = obj.foo
    obj.foo() 
    bar() 复制代码
  2. 我在读 Events 的 lib/events 源码的时候发现多次用到call关键字,看来有必要搞懂 this 与 call 相关的所有内容。

    其中几句代码是这样写的

    // 场景1: function EventEmitter() {
      EventEmitter.init.call(this);
    } // 场景2: return this.listener.call(this.target); // 场景3: return listenerCount.call(emitter, type); 复制代码
  3. 箭头函数使用不当报错,在封装 Node.js 的一个 ORM 映射框架 Sequelize 时,封装表关联关系,由于使用箭头函数造成了读到的上下文发生变化,不是想要的 model 信息,而是指向了全局 。

  4. call 关键字在写代码过程中还是比较常用的,有时候我们常常会使用 call 关键字来指定某个函数运行时的上下文,有时候还使用 call 关键字实现继承。

代码例子如下:

var person = { "name": "koala" }; function changeJob(company, work) { this.company = company; this.work    = work;
};

changeJob.call(person, '百度', '程序员'); console.log(person.work); // '程序员'
发布于
  用户评论
    生活编程