首页 > 解决方案 > 为什么从函数引用调用静态类方法时未定义但直接调用时未定义?

问题描述

我试图从对该方法的引用中调用一个类的静态方法,但是当我这样做时,“this”变量是未定义的:

class SomeClass {
  static test() {
    console.log(this);
  }
}

SomeClass.test(); // logs reference to class as desired
let fn = SomeClass.test;
fn(); // logs undefined
let fn2 = () => { SomeClass.test(); }
fn2(); // logs reference to class as desired

为什么在 fn() 调用中未定义“this”?有没有办法确保它的定义?将方法包装在像 fn2() 这样的匿名函数中可以解决问题,但有点难看。fn1 的这种行为是否在 Javascript 中给出了这种未定义的设计?

标签: javascriptecmascript-6static-methodses6-class

解决方案


推荐阅读