模块变量作为方法的输出

时间:2017-04-28 13:34:18

标签: javascript

我有一个Javascript模块:

const myModule = {
  foo: this.initializeFoo(),

  initializeFoo(){
    // some loops and stuff to create an array
  }
}

但我收到错误:this.initializeFoo不是函数。

我需要使用一些语法来实现这项工作,还是不可能?

3 个答案:

答案 0 :(得分:2)

如果您只打算在对象的创建中调用一次,那么我会选择一个自动执行的匿名函数:

const myModule = {
    foo: (function () {
        // some loops and stuff to create an array
    })()
};

或者,您可以改为使用箭头语法:

const myModule = {
    foo: (() => {
        // some loops and stuff to create an array
    })()
}

示例摘录:



const myModule = {
    foo: (() => {
        console.log('Processing');
        return Array.apply(null, {length: 10}).map(Number.call, Number);
    })()
};

// You can see that 'Processing' is only printed once
console.log(myModule.foo[2]);
console.log(myModule.foo[7]);




答案 1 :(得分:1)

在Object

之外声明initializeFoo()函数



const myModule = {
      foo : initializeFoo(),
    }
     
     function initializeFoo(){
     return 'hi';
     //or some loops and stuff to create an array
     }
    
    console.log(myModule)




答案 2 :(得分:0)

如果你可以使用ES6:

class MyModule {
  constructor() {
    this.initializeFoo();
  }
  initializeFoo() {
    console.log('test');
    // some loops and stuff to create an array
  }
}

const myModule = new MyModule();

如果您需要存储initializeFoo()的结果:

class MyModule {
  constructor() {
    this.initializeFoo();
  }
  initializeFoo(){
    console.log('test');
    this.initialVal = 2;
  }
}

const myModule = new MyModule();
// 'test'

myModule.initialVal
// 2