javascript - 从匿名函数中引用 self

标签 javascript

不知道如何表达,我基本上想扩展我的类属性,以便用户可以覆盖它们。不过,我更喜欢匿名函数,它将属性扩展为仅自执行。

var extend = function(target, sources) {
      if (!sources.length) return target;
      const source = sources.shift();

      if (isObject(target) && isObject(source)) {
        for (const key in source) {
          if (isObject(source[key])) {
            if (!target[key]) Object.assign(target, { [key]: {} });
            extend(target[key], source[key]); // <-- Line 9
          } else {
            Object.assign(target, { [key]: source[key] });
          }
        }
      }
      return extend(target, sources);
    }.call(this, this, [ defaults, options ]);

这似乎一直有效到第 9 行(请参阅上面代码中的注释)。它似乎无法引用自身。然而,如果这是一个命名函数而不是匿名函数,那么这似乎工作得很好。

我怎样才能让它发挥作用?

最佳答案

为什么需要匿名?调试变得更糟。您仍然可以使用函数表达式。

const myfunc = function nameFunctionExpression(i) {
  if(i === 10) {
    return i;
  }
  nameFunctionExpression(i + 1);
};

myfunc(0);

我不确定您想要实现什么目标。提供一种覆盖属性的方法吗?也许发布一个使用示例?

function extend(obj, rest) {
  return Object.assign(obj, rest);
}

const obj = { a: 1, nested: { c: 3 } };

// { a: 2, nested: { c: 4 }, b: 3 }
console.log(extend(obj, { a: 2, b: 3, nested: { c: 4 } }));

关于javascript - 从匿名函数中引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45331405/

相关文章:

javascript - Vuex 突变更新状态,计算属性永远不会反射(reflect)标记中的更新

javascript - Grails在JavaScript中调用application.config值

javascript - 未捕获的类型错误 : Cannot read property 'name' of undefined

javascript - 拼接 JSON 列表中的元素 - javascript

javascript - 从对象循环键动态传递属性引用

javascript - 查找屏幕数量

javascript - 使用 group() 函数的 Google 可视化堆积柱形图

Javascript 重定向不适用于以 www 开头的 URL

javascript - Function.prototype.method 什么是原型(prototype)[名称]

javascript - 在 AngularJS 中限制正则表达式输入的指令