繁体   English   中英

回调引用作为Javascript中的参数

[英]Callback references as arguments in Javascript

var clientData = {
    id: 1969,
    fullName: "Not Set",
    setUserName: function (firstName, lastName)  {
      clientData.fullName = firstName + " " + lastName;
      console.log(clientData.fullName);
    }
};

function getUserInput(firstName, lastName, callback)  {  
  //why can't I say clientData.callback (firstName, lastName); instead
  callback (firstName, lastName);
}

getUserInput ("Peter", "Pan", clientData.setUserName);

如代码中所注释,为什么我不能说clientData.callback (firstName, lastName); 如果回调参数引用的应该通过点访问从clientData访问的函数? 如果clientData.setUserName只是对函数对象的引用,那么我应该不带意外的代码说出clientData.clientData.setUsername对吧?

我是一个初学者,因为它无法正常工作,所以我确定我在想什么错误。

clientData.callback从字面上尝试访问属性callbackclientData 考虑一下clientData.callback等同于clientData['callback']

之后会发生什么. 不被视为变量。 即使是, callback的值也是一个function 您不能将函数用作属性名称 属性名称是字符串

创建函数时,请将参数视为函数中使用的变量。 当您这样做时:

function getUserInput(firstName, lastName, callback)

然后用以下命令调用它:

getUserInput ("Peter", "Pan", clientData.setUserName);

函数顶部隐式发生的是:

var firstName = "Peter";
var lastName = "Pan";
var callback = clientData.setUserName

您作为callback传递的任何内容在函数内部都称为callback 因此,如果传入clientData.setUserName ,则它属于名为clientData的对象并不重要-它仍称为内部callback

尝试使用:

function getUserInput(firstName, lastName)  {  
  clientData.setUserName (firstName, lastName);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM