es6种json内部定义函数,其他的内部成员怎么调用?

这里不知道为什么无法运行

const Helper = {
    /**
     * 判断是不是一个DOM对象
     *
     * @param {*} obj 要判断的对象
     * @return {boolean} 是否是DOM对象
     */
    isDom(obj) {
        console.log(obj)
    },

    ad:function(obj) {
        return obj*2
    },

    add3(a,b){
        b = this.ad(b)
        return a+b;
    }(1,2),
    

}




Helper.isDom('我的加');
console.log(Helper.add3);
const Helper = {
    each:function(e){
    
    },
    var domFactories = ['div', 'a', 'span'],
    var DOM = {},
    each(domFactories){
        for(var element in domFactories){
            DOM[element] =  domFactories[element]
        }
        
    }
    
}

我的意思在const内部定义一个each函数,一个空对象DOM,还有一个domFactories

然后我运行each函数给这个控对象赋值

最后在Helper调用带有值的DOM
阅读 5k
4 个回答

首先纠正你一下,在JavaScript中不要读JSON,读对象。
如果你的问题是在函数add3()中调用ad()的话,那么你的add3()(1,2)这种语法是错误的。应该改写成这样:

add3(a,b){
    b = this.ad(b)
    return a+b;
},

如果要在对象中互相访问的话,使用this对象中的this指向的就是当前的对象。

在对象内调用内部函数,用this调用即可。
你这里add3定义错误。改成这样就行了,另外在对象最后一个属性,最好不要在后面添加,有些情况(<= IE7)会报错。

add3: function(a,b){
        // this调用内部函数
        b = this.ad(b)
        return a+b;
    }

add3写法有问题,如果你要想返回一个其他的函数或者计算后的值,请这样

  add3: ((a,b) => {
        b = this.ad(b)
        return a+b;
    })(1,2)

这位老哥,你那里的(1,2)应该是想指对象内部一些的值吧......要说清楚啊。
运用函数绑定,以及闭包知识就可以解决了

const Helper = {
  isDom(obj) {
      console.log(obj)
  },
  ad:function(obj) {
      return obj*2
  },
  add3(a,b){
    return (function(a,b){
      b = this.ad(b)
      return a+b
    }.bind(this)(1,2))
  },
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题