我有一个Javascript模块:
const myModule = {
foo: this.initializeFoo(),
initializeFoo(){
// some loops and stuff to create an array
}
}
但我收到错误:this.initializeFoo
不是函数。
我需要使用一些语法来实现这项工作,还是不可能?
答案 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