首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >this.function和this.function()的区别

this.function和this.function()的区别
EN

Stack Overflow用户
提问于 2014-12-10 18:30:51
回答 4查看 846关注 0票数 0

做this.functionName和this.functionName()有什么区别?我对这两个人之间没有明确的理解。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-10 18:33:30

this.functionName读取对象this的属性functionName的值。

this.functionName()读取对象的属性functionName值,this 尝试将其作为函数调用。如果this.functionName的值不是函数,则会引发错误。

将语句分解为

代码语言:javascript
复制
this.functionName()
\____callee_____/
\_CallExpression__/

"callee“可以是任何表达式,但必须解析为函数对象。

如果你好奇的话,去看看AST

票数 5
EN

Stack Overflow用户

发布于 2014-12-10 18:33:27

求值时,第一个只是对函数的引用,在第二个例子中,函数被执行,表达式将被计算为函数的返回值。

票数 2
EN

Stack Overflow用户

发布于 2014-12-10 18:33:21

this.functionName返回函数本身,this.functionName()将执行该函数并返回结果

代码语言:javascript
复制
function A() { 
    this.doSomething = function() { 
        return "A"; 
    } 

    this.doOtherThing = function() { 
        console.log(this.doSomething); 
        console.log(this.doSomething());         
    }     
}

var a = new A();
a.doOtherThing()

将以下内容打印到控制台:

代码语言:javascript
复制
function () { 
  return "A"; 
}

A

第一个是函数本身,第二个是函数的结果。您可能希望在不执行函数的情况下返回函数,例如,可以将其传递给另一个函数,以便在AJAX请求完成后调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27408295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档