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

这两种在javascript类中定义方法的方法之间的区别,javascript,methods,Javascript,Methods,我有以下课程: var myclass = (function(){ var b={}; b.method1 = function(){ console.log("method1"); }; b.method2 = function class2(){ console.log("method2"); }; return b; }()); 除了method1是分配给method1的匿名函数和method2是命名函数之外,这些方

我有以下课程:

var myclass = (function(){
   var b={};

   b.method1 = function(){
       console.log("method1");
   };

   b.method2 = function class2(){
       console.log("method2");
   };

   return b;
}());
除了
method1
是分配给method1的匿名函数和
method2
是命名函数之外,这些方法之间有什么区别吗

我通常使用method1方法,但只是发现方法声明的method2


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

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

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

这几乎是一样的。在某些浏览器上,如果调用
console.log(b.method1,b.method2)
,您可以看到不同之处,因为第二个浏览器有一个名称。
这里有很多关于这个话题的文章。这是其中之一:

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

方法2的可能重复项在错误日志中显示“class2”,但方法1显示“匿名”,您认为哪一个更有用?只需附带说明:您可以使用
this
而不是
var b
,实际上,这个名称不仅可以用来调用函数,还可以用更一般的方式来引用它本身。