这两种方法在javascript类中定义方法的区别

difference between those 2 way to define a method in a javascript class

本文关键字:方法 定义 区别 javascript 两种      更新时间:2023-09-26

我有以下类:

var myclass = (function(){
   var b={};
   b.method1 = function(){
       console.log("method1");
   };
   b.method2 = function class2(){
       console.log("method2");
   };
   return b;
}());

除了method1是分配给方法1的匿名函数和method2是命名函数之外,这些方法之间有什么区别吗?

我通常使用方法1的方式,但只发现方法2用于方法声明。

使用一个比另一个有什么好处吗?

对于命名函数表达式(method2),您可以通过其名称调用函数本身。

b.method2 = function class2(){
   console.log("method2");
   if (somecondition){
       var something = new class2();
   }
};

功能上这几乎是一样的。在某些浏览器上,如果您调用console.log( b.method1, b.method2 ),您可以看到差异,因为第二个浏览器有名称。这里有很多关于这个主题的文章。这就是其中之一:在JavaScript中,函数表达式和声明之间有什么区别?

JavaScipt中的函数名基本上是一个变量,因此您可以重用它。这意味着您可以在自执行函数中使用class2,而无需调用b.method2。由于自执行函数返回b对象,因此不能在外部使用class2