基于作为属性值给出的对象执行函数

问题描述 投票:0回答:1

我有一个包含属性值的对象作为函数名称。这是我的对象obj

var obj = {
    beforeCalc: beforeCalc,
    calcEcn: calcEcn
};

function beforeCalc() {
    console.log("beforeCalcMethodExecuted");
}

function calcEcn() {
    console.log("calcEcnMethodExecuted");
}

像这样运行对象属性值。

function runMethodsFromObj() {
    for (var i in obj) {
    console.log(i); // beforeCalc, calcEcn
    console.log(i()); //i is not defined 
  }
}
runMethodsFromObj();

为什么回归undefined

javascript oop
1个回答
1
投票

for-in循环为您提供物体的keysnot their value

var obj = {
    beforeCalc: beforeCalc,
    calcEcn: calcEcn
};
function beforeCalc() {
    console.log("beforeCalcMethodExecuted");
}
function calcEcn() {
    console.log("calcEcnMethodExecuted");
}

function runMethodsFromObj() {
  for (var i in obj) {
    console.log(i); // beforeCalc, calcEcn
    console.log(typeof i); // string
    obj[i](); // Executes the stored function 
  }
}
runMethodsFromObj();
© www.soinside.com 2019 - 2024. All rights reserved.