回调引用作为 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 访问的函数,我为什么不能说 clientData.callback (firstName, lastName);
点访问?如果 clientData.setUserName 只是对函数对象的引用,我应该不会不小心用我的注释代码说 clientData.clientData.setUsername 吧?
我是初学者,因为它不起作用,所以我确定我想错了。
clientData.callback
会 字面上 尝试在 clientData
上访问 属性 callback
。想想 clientData.callback
等同于 clientData['callback']
。
.
之后的内容不被视为变量。即使是,callback
的值也是一个 函数 。您不能将函数用作 属性 name。 属性 名称是 字符串 .
创建函数时,将参数视为函数中使用的变量。当你这样做时:
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);
}
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 访问的函数,我为什么不能说 clientData.callback (firstName, lastName);
点访问?如果 clientData.setUserName 只是对函数对象的引用,我应该不会不小心用我的注释代码说 clientData.clientData.setUsername 吧?
我是初学者,因为它不起作用,所以我确定我想错了。
clientData.callback
会 字面上 尝试在 clientData
上访问 属性 callback
。想想 clientData.callback
等同于 clientData['callback']
。
.
之后的内容不被视为变量。即使是,callback
的值也是一个 函数 。您不能将函数用作 属性 name。 属性 名称是 字符串 .
创建函数时,将参数视为函数中使用的变量。当你这样做时:
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);
}