做this.functionName和this.functionName()有什么区别?我对这两个人之间没有明确的理解。
发布于 2014-12-10 18:33:30
this.functionName读取对象this的属性functionName的值。
this.functionName()读取对象的属性functionName值,this 和尝试将其作为函数调用。如果this.functionName的值不是函数,则会引发错误。
将语句分解为
this.functionName()
\____callee_____/
\_CallExpression__/"callee“可以是任何表达式,但必须解析为函数对象。
如果你好奇的话,去看看AST。
发布于 2014-12-10 18:33:27
求值时,第一个只是对函数的引用,在第二个例子中,函数被执行,表达式将被计算为函数的返回值。
发布于 2014-12-10 18:33:21
this.functionName返回函数本身,this.functionName()将执行该函数并返回结果
function A() {
this.doSomething = function() {
return "A";
}
this.doOtherThing = function() {
console.log(this.doSomething);
console.log(this.doSomething());
}
}
var a = new A();
a.doOtherThing()将以下内容打印到控制台:
function () {
return "A";
}
A第一个是函数本身,第二个是函数的结果。您可能希望在不执行函数的情况下返回函数,例如,可以将其传递给另一个函数,以便在AJAX请求完成后调用它。
https://stackoverflow.com/questions/27408295
复制相似问题