javascript - 了解js返回类型

标签 javascript

我有一个函数,它返回对象文字nameObj的引用。我想访问返回对象中的方法,但收到 js 错误。为什么 setNameObj 方法在 nameObj 对象上不可用?

       var nameObj=function(){

            var _locname;

            return {
                item:'item1',
                getNameObj: function(){
                    return _locname
                },
                setNameObj: function(nm){
                    _locname = nm
                }
            }
        }
        console.log(nameObj.setNameObj('tempValue'));
        console.log(nameObj.getNameObj());

最佳答案

因为 nameObj 是一个函数,它返回一个具有您的方法的对象!

尝试调用它然后对结果调用函数:

console.log(nameObj().setNameObj('tempValue'));
console.log(nameObj().getNameObj());

当然,在这种情况下它基本上没有实际意义,因为每次调用都会创建一个新的闭包。您很可能需要一个变量(或者只是将 nameObj 转换为 IIFE)。

var obj = nameObj();
obj.setNameObj('tempValue');
console.log(obj.getNameObj());

关于javascript - 了解js返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994378/

相关文章:

javascript - 函数 shExpMatch 在 IE10 中总是返回 FALSE

javascript - beforeunload 中的 ajax 会可靠地执行吗?

javascript - 通过分别单击标签将标签添加到文本区域

javascript - React Router Redux - 使用链接或后退按钮时重复渲染

php - 如何在 Internet Explorer 的谷歌图表中制作透明背景?

javascript - 如何从给定的 json 中检索元素

javascript - AngularJS Smart Table 在显示所有行时用空格过滤特殊字符

javascript - Audio端的Knockout触发功能

javascript - .split()后创建关联数组

javascript - 替换 ExtJS4 中的 Ext.reg() (xtype)?