0

我看到有些人使用不同的方式来创建一个类,但我真的不知道使用内联、使用名称或不使用函数名称的区别或优势。例如:

// Style 1. myclass.js. Use module.exports on a var
var myClass = function MyClass() {
   return something;
};

module.exports = myClass;

// Style 2. myclass.js. inline module.exports
module.exports = function MyClass() {
  return something;
};

// Style 3. myclass.js. inline module.export without function name
module.exports = function () {
   return something;
};

用法:

var MyClass = require('myclass');
var classObj = new MyClass();

谁能解释或告诉我这些差异?我猜想使用函数名会提供更多关于堆栈跟踪的信息?

谢谢

4

1 回答 1

3

差异很小。

#1 和 #2 之间的区别在于myClass(变量)可以在模块内的其他地方使用。

#2 和 #3 之间的区别在于函数有一个名称,因此:

  1. 如果您愿意,使用递归会更容易(尽管在 #3 中并非不可能)
  2. 正如你所说,你会得到更好看的堆栈跟踪。

(构造函数有时是递归的,你可以使用和不调用它们的习语,new它们首先检查是否this是一个实例,MyClass如果不是递归调用它们自己new)。

于 2013-08-29T06:09:32.723 回答