试图重构一个简单的函数:
// arr - array of objects with functions
function eventNotify(arr, event) {
for (var i = 0; i < arr.length; i++) {
var a = arr[i];
if (typeof a[event] === 'function') {
a[event]();
}
}
}
进入这个:
function eventNotify(arr, event) {
for (var i = 0; i < arr.length; i++) {
var a = arr[i][event];
if (typeof a === 'function') {
a();
}
}
}
我一直想了解这种变化如何破坏我的所有测试。
第二个实现与第一个实现在功能上有何不同?
我什至试图拆分索引的使用,以为可能将其视为3D数组:
var a = arr[i];
a = a[event];
但是,这没有什么区别。
请有人指出我到底在改变算法的逻辑!我现在正在为此而绞尽脑汁。
我正在Node.js 10.9下对其进行测试
答案 0 :(得分:0)
感谢@Pointy
我的错误是无法看到语法a[event]()
掩盖了它在设置为对象this
的{{1}}上下文中传递的事实,而简单的a
却没有,因此结果不一致。