1

最近,我为一个 OP 编写了这个函数:

$.prototype.reduce = function reduce(obj1, obj2) {
  for (var k in obj2) {
    if (obj1.hasOwnProperty(k) && obj2.hasOwnProperty(k)) {
      if (typeof obj1[k] == "object" && typeof obj2[k] == "object") {
         reduce(obj1[k], obj2[k]);
      }
      else delete obj1[k];
    }
  }
}

该函数利用命名函数表达式的特性来利用递归。我现在想知道,如何使用新的箭头函数来完成相同的行为,因为它们根据定义总是匿名的。

$.prototype.reduce = (obj1, obj2) => {
  for (var k in obj2) {
    if (obj1.hasOwnProperty(k) && obj2.hasOwnProperty(k)) {
      if (typeof obj1[k] == "object" && typeof obj2[k] == "object") {
         XXXX          }
      else delete obj1[k];
    }
  }
}

代替XXX,我会有以下想法:

1. arguments.callee(obj1[k], obj2[k]);(显然已弃用)

2. $.reduce(obj1[k], obj2[k])(调用函数变量本身 - 对于自调用函数表达式将失败)

3.继续使用“经典”的函数表达式

还有更多我错过的方法吗?在双箭头函数中使用递归的最佳方法是什么?

4

0 回答 0