我有 3 个代码:
var control = new Control();
function Control() {
this.doSomethingElse = function() {...}
this.doSomething = function () {
control.doSomethingElse();
}
}
或者
var control = new Control();
function Control() {
var self = this;
this.doSomethingElse = function() {...}
this.doSomething = function () {
self.doSomethingElse();
}
}
或者
var control = Control();
function Control() {
var self = this;
this.doSomethingElse = function() {...}
this.doSomething = function () {
self.doSomethingElse();
}
return self;
}
重要:函数是一个 Controller ,只声明一次。然后我在我的代码中到处使用“控制”......
我想知道 control.doSomethingElse() 是否很慢?
最后,在这些示例中,正确的做法和/或最快的代码是什么?
谢谢!
最佳答案
第一个是错误的——一个对象不应该在内部使用它在外部已知的变量名。其他代码可能会更改该变量以指向其他内容,从而破坏此代码。
第三个也是错误的 - 当在没有 new
的情况下调用 Control()
时,对 this.foo
的赋值最终会附加到全局对象(除了在严格模式下,在裸函数调用中没有隐式 this
,因此对 this.doSomethingElse
的赋值尝试附加到 undefined
,导致运行时错误)。
这只剩下第二个是合适的,但最终这是一个正确性问题,而不是性能问题。
关于javascript - 在 JS 中使用这个还是新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375003/