在对象中调用方法时,它说它不是函数

时间:2019-01-20 08:43:32

标签: javascript

foo.bar()bar()不是函数

我试图在和对象上调用方法,但是它说x不是函数

var UIController = (function () {

    return {

        getInput: function () {

            return {

                type: document.querySelector('.add__type').value,
                description: document.querySelector('.add__description').value,
                value: document.querySelector('.add__value').value
            }
        }
    }

})
console.log(UIController.getInput());

当我记录它时,它说getInput()不是functoin

4 个答案:

答案 0 :(得分:0)

var UIController是一个函数,而不是对象。

再看一下,功能和对象的区别。

对象:

var UIController = {
 key : value

}

功能:

var UIController = function (){
....
}

因此您可以使用UIController()。getInput()

进行调用

答案 1 :(得分:0)

您需要调用定义来获取返回的内部对象的实例,该对象实际上包含getInput方法,如下所示:

var UIController = (function () {

    return {
        getInput: function () {
          console.log('foo')
        }
    }
})

var instance = UIController();
instance.getInput()

答案 2 :(得分:0)

我找到了答案,问题出在我的IIFE函数上,我应该在函数的末尾添加“()”这个花括号,这样就可以了

var UIController = (function () {

return {
    getInput: function () {
      console.log('foo')
    }
}
})()

答案 3 :(得分:-1)

UIController是您分配的函数,因此 像这样的控制台调用.log(UIController()。getInput()) 因为UIController也返回一个函数。