想知道如何让它工作。
特定 IP 地址与特定功能相关联。(注意:在此示例中,我使用简短的人名而不是 IP 地址,但想法是一样的。)
我如何将 keyname(*) 传递给被调用的函数?
const $ = document.querySelector.bind(document);
const obj = {bob:sayname, ann:sayname, ed:sayhi};
$('input').addEventListener('keyup', readme);
function readme(e){
console.log(e.target.value);
if ( e.target.value in obj){
console.log('got here...');
obj[e.target.value].call(e.target.value); //<== I want to do THIS
obj[e.target.value].call('Fred'); //<== but this doesn't work either
}
}
function sayname(usr){
console.log(usr);
console.log('Name: ', usr);
}
function sayhi(usr){
console.log(usr);
alert('hi, ' + usr);
}
<input type="text">
(*)这将是 IP 地址(传递给函数)——或者,在这个例子中,是人名(Bob、Ann、Ed)。基本上,在函数中我希望使用该 IP 地址,因此我需要将其传递给函数。
更新:
这是一个可以玩的小提琴:https ://jsfiddle.net/8k0fmhdg/
使用的原因
.call()
是为了能够将参数传递给函数。如果有其他/更好的方法可以做到这一点,请告诉我。我以为我已经尝试了所有的排列/组合,但我肯定我错过了一两个——可能是最明显的一个…… (这就是我的做法……)
如果你只是想调用函数,则不需要该
call
方法。只需调用函数即可。call
用于传递特定对象作为this
第一个参数,正如@mykaf 在他们的评论中所解释的那样: