类中的函数表达式

时间:2018-04-18 10:53:19

标签: javascript

我理解function expressionfunction declaration之间的区别是什么,但是当涉及到类的引用时,它们有何不同?喜欢哪里可以在课堂内使用以下someFunction,哪里不能?哪个类可以在哪里实例化?

class xyz {
    someFunction(){
        // Function code
    }
}

VS

class xyz {
    var someFunction = function(){
        // Function code
    }
}

2 个答案:

答案 0 :(得分:3)

当您使用函数声明时,该函数将转到类原型。

class xyz {
    someFunction(){
        // Function code
    }
}

上面的类可以表示为函数构造函数:

    function xyz() {
        //Code.
    }
    xyz.prototype.someFunction = function() {
      //Some code
    }

所以someFunction()将成为xyz原型的一部分。

在类中使用它们时,函数表达式会引发无效的语法错误。 但是当你在经典函数构造函数中使用函数表达式时,该函数只是一个局部变量,xyz实例无法访问它。

function xyz()
 {
    var someFunction = function(){
        // Function code
    }
}

答案 1 :(得分:1)

此案例与函数表达式和函数声明

之间的区别无关

您将获得Unexpected identifier,因为文档不允许或定义此类语法

class xyz {
    var someFunction = function(){
        // Function code
    }
}

class语法中,您有三种选择来编写函数:

class xyz {
  constructor() {
    // Function code
  }
  someFunction() {
    // Function code
  }
  static sayHi() {
    // Function code
  }
}

如果您使用文档不允许的其他表达式或语句,则会出现错误