在JS中使用这个或新的?

ale*_*no2 5 javascript this declare

我有3个代码:

var control = new Control();

function Control() {

   this.doSomethingElse = function() {...}
   this.doSomething = function () {
       control.doSomethingElse();
   }

}
Run Code Online (Sandbox Code Playgroud)

要么

var control = new Control();

function Control() {
   var self = this;

   this.doSomethingElse = function() {...}
   this.doSomething = function () {
       self.doSomethingElse();
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

var control = Control();

function Control() {
   var self = this;

   this.doSomethingElse = function() {...}
   this.doSomething = function () {
       self.doSomethingElse();
   }

  return self;
}
Run Code Online (Sandbox Code Playgroud)

重要提示:该函数是一个控制器,只声明一次.然后我在我的代码中到处使用"控制"...

我想知道control.doSomethingElse()是否很慢?

最后,在这些例子中做什么和/或最快的代码是什么?

谢谢 !

Aln*_*tak 3

第一个是错误的——对象不应该在内部使用外部已知的变量名。其他代码可能会更改该变量以指向其他内容,从而破坏此代码。

第三个也是错误的 - 当调用时Control()没有new对 inside 进行赋值时this.foo,最终会附加到全局对象(严格模式除外,在严格模式下,this裸函数调用没有隐式,因此对 的赋值this.doSomethingElse尝试附加到undefined,导致运行时错误)。

只剩下第二个是合适的,但最终这是一个正确性问题,而不是性能问题。