通过function.call()发送参数

问题描述 投票:0回答:1

想知道如何进行这项工作。

特定的IP地址与特定的功能相关联。 (注意:在这个例子中,我使用短人名而不是 IP 地址,但想法是相同的。)

如何将键名(*)传递给被调用的函数?

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)。基本上,在 func 中我希望使用该 IP 地址,因此我需要将其传递到 func 中。

javascript
1个回答
0
投票

如果你只是想调用函数,则不需要

call
方法。只需调用该函数即可。

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](e.target.value);
  }
}
function sayname(usr){
    console.log(usr);
    console.log('Name: ', usr);
}
function sayhi(usr){
    console.log(usr);
    alert('hi, ' + usr);
}
<input type="text">

© www.soinside.com 2019 - 2024. All rights reserved.