Querendo saber como fazer isso funcionar.
Um endereço IP específico é associado a uma função específica. (Observação: neste exemplo, estou usando nomes curtos de pessoas em vez de endereços IP, mas a ideia é a mesma.)
Como posso passar o keyname(*) para a função chamada?
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">
(*) Qual seria o endereço IP (sendo passado para a função) -- ou, neste exemplo, o nome humano (Bob, Ann, Ed). Basicamente, na função eu desejo usar esse endereço IP, então preciso passá-lo para a função.
ATUALIZAR:
Aqui está um violino para tocar: https://jsfiddle.net/8k0fmhdg/
O motivo do uso
.call()
é poder passar parâmetros para a função. Se houver outra / melhor maneira de fazer isso, por favor me esclareça. Eu pensei que tinha tentado todas as permutações/combinações, mas tenho certeza de que esqueci uma ou duas -- e provavelmente a mais óbvia... (É assim que eu trabalho...)
Se você só quer chamar a função, não precisa do
call
método. Apenas chame a função.call
é usado para passar um objeto específico comothis
no primeiro argumento, como @mykaf explica em seu comentário: