【发布时间】:2017-08-01 20:49:16
【问题描述】:
有没有办法让这样的东西在 JS 中工作:
function iterateObject(obj, f) {
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) f(prop);
}
}
然后将它应用到一个对象上:
let x = {a : function() {
// do smth
}};
iterateObject(x, (prop) => {
prop.a();
}
我收到一个错误,即 prop.a() 不是函数,但如果我调用 x.a() 就没有问题。不是很重要,但我只是想知道并且找不到答案。
【问题讨论】:
-
嗯,是的,你应该使用
x.a()。你的实际问题是什么? -
尝试使用
f(obj[prop])和val => val()作为回调,或者在回调中使用x[prop]() -
属性名称的字符串正在传递给您的
f,所以实际上发生的事情是'a'.a();而不是x['a'](); -
当您可以简单地使用
for (let prop in x)循环时,为什么还要使用带有回调的iterateObject(x, (prop) =>函数? -
迭代多个嵌套对象并为每个对象调用相同的方法,但有许多这样的嵌套对象具有不同的调用方法,这样可以减少代码。
标签: javascript function object