Javascript 在函数内部创建的对象中调用方法

Javascript 在函数内部创建的对象中调用方法,javascript,function,object,methods,Javascript,Function,Object,Methods,我被这个问题弄糊涂了,甚至JavaScript MDN都没有为我澄清这个概念 有一个名为invokeMethod的函数,我必须在该函数中创建一个对象。对象包括一个方法。我需要使用括号表示法调用对象中的方法,但不需要返回任何内容 这是问题和我的代码。当我试图调用函数括号中的方法时,不断收到错误消息 问题:method是一个字符串,包含对象上方法的名称 使用括号表示法调用此方法。 不需要归还任何东西 输入示例: { foo: function() {} }, 'foo' 我的代码: functio

我被这个问题弄糊涂了,甚至JavaScript MDN都没有为我澄清这个概念

有一个名为invokeMethod的函数,我必须在该函数中创建一个对象。对象包括一个方法。我需要使用括号表示法调用对象中的方法,但不需要返回任何内容

这是问题和我的代码。当我试图调用函数括号中的方法时,不断收到错误消息

问题:method是一个字符串,包含对象上方法的名称 使用括号表示法调用此方法。 不需要归还任何东西

输入示例:

{ foo: function() {} }, 'foo'
我的代码:

function invokeMethod(object, method) {
  // code here
  const obj = {
    name: 'kung',
    foo: function(){
      console.log('foo');
    }
  };
}

invokeMethod(obj[foo]);
也许这会有帮助

看看你的函数,我看到你有两个参数
object
method
。所以,你的功能做这个很糟糕

function invokeMethod(object, method) {
  // code here
  const obj = {
    name: 'kung',
    foo: function(){
      console.log('foo');
    }
  };
}
如果您将要接收
obj函数
,您应该具有以下功能:

function invokeMethod(method)
现在,按照您的示例,我认为您确实想要接收
obj函数
。所以,在这种情况下,你应该这样做

const obj = {
    name: 'kung',
    foo: function(){
      console.log('foo');
    }
  };

function invokeMethod(obj, method) {
  if((method in obj) && typeof obj[method] ==="function"){

    return obj[method]();
  }
}

invokeMethod(obj, 'foo');
检查这是否有帮助

函数调用方法(对象、方法){
//对象定义
常量对象={
姓名:"龚",,
foo:function(){
console.log('foo');
}
};
//条件调用
开关(对象){
“obj”案:
if(type of obj[method]=“function”)返回obj[method]();
违约:
log(“找不到给定对象!”);
}  
}
//调用方法

调用方法(“obj”、“foo”)invokeMethod(obj[foo])中的code>什么是变量
obj
,什么是变量
foo
?您的
invokeMethod
函数有两个参数,您可以使用一个参数来调用它,这并不重要,因为您在代码中没有使用任何一个有效的参数!你能为我解释一下/澄清一下你是如何达成这个解决方案的吗?特别是IF语句?这对我的理解很有帮助,因为我正在自学Javascript。您正在寻找对象的方法,因此必须执行查询。这个查询很简单,为此,可以使用if语句。如果有两个操作,
(obj中的方法)
obj的类型[method]==“function”
,则进入
中的
操作符用于了解对象的属性,在本例中为方法
typeof
用于了解类型属性。它以字符串形式返回类型,因此您必须知道该类型是否为
函数
。最后一步是使用括号符号返回您正在寻找的函数。在这里,您将直接获得不可访问的对象,并且您可以通过invokeMethod()调用其中的方法。我认为您需要在这里进行一些更改。我的意思是,当然,查询是有效的,但在实时执行中,他需要给出一个obj并在该对象中查看函数。如果我看到你的代码,你总是返回obj常量中的函数,而不是object参数。是的@KenrySanchez,我想我错过了那部分,谢谢你指出这一点。我已经更新了我的答案。干杯