javascript - Javascript 对象中的函数数组

标签 javascript arrays function object callback

我需要在函数数组中创建一个对象,该对象应该在对象内部调用。但 myObj.myFunctions 在创建后在我的对象内部始终未定义。

这是我的示例代码

var myObj = {
      myValue:"My Callback function has been Called",
      myFunctions: [this.myCallback,this.myCallback2],
      init: function(){
        //I need to call this.myFunctions[0...etc]  as callback
        //this.myFunctions[0]() //<-- Here is the error
        console.log(this.myFunctions); //<-- always undefined
      },
      myCallback:function(){
         console.log(this.myValue);
      },
      myCallback2:function(){
         console.log(this.myValue+" Second Callback");
      }
}
var createObject = Object.create(myObj);
createObject.init();
 
 

知道如何创建函数数组作为主对象的属性吗? 谢谢

最佳答案

You need to Create a function inside your myFunctions and return those array of callbacks:

方法#1

var myObj = {
  myValue:"My Callback function has been Called",
  myFunctions: function () {                       // Assign a function and return those array of callbacks
    return [this.myCallback,this.myCallback2];
  },
  init: function(){
    return this.myFunctions();
  },
  myCallback:function(){
    console.log(this.myValue);
  },
  myCallback2:function(){
    console.log(this.myValue+" Second Callback");
  }
};

var createObject = Object.create(myObj);
var functions    = createObject.init();

console.log(functions);    // [f(), f()] 
                           // f for short-term of 'function'

方法#2 - 已经支持使用直接 () 函数调用来获得更简洁的代码

var myObj = {
  myValue:"My Callback function has been Called",
  myFunctions() { 
    return [this.myCallback, this.myCallback2] 
  },
  init() { 
    return this.myFunctions(); 
  },
  myCallback(){
    console.log(this.myValue);
  },
  myCallback2(){
    console.log(this.myValue+" Second Callback");
  }
};

方法 #3 - 使用 ES6 Spread 运算符并将“this”替换为“myObj”

const myObj = {
  myValue:"My Callback function has been Called",
  myFunctions: () => [myObj.myCallback, myObj.myCallback2],
  init: () => myObj.myFunctions(),
  myCallback: () => console.log(myObj.myValue),
  myCallback2: () => console.log(`${myObj.myValue} Second Callback`)
};

关于javascript - Javascript 对象中的函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53623004/

相关文章:

JavaScript:我可以获得完整的 url,包括域名、文件名和协议(protocol)吗?

c++ - 如何将逗号分隔的数字矩阵放入 C++ 中的动态分配数组中?

c - 字符串和函数的多维数组

Javascript添加文件输入框按钮麻烦

python - 如何正确计算下列方程?

javascript - 通过将第二列中的每个单元格与其最后一行中的对应单元格进行比较来进行条件格式设置

javascript - 根据背景大小拉伸(stretch)容器高度

javascript - "Object doesn' t 支持此属性或方法"IE10/11

arrays - 从多个范围构建数组

c++ - 我能知道我的函数有多少个参数吗?