首页 > 解决方案 > 如何记录仅在 .call() 中使用的函数

问题描述

我有 2 个类以完全相同的方式初始化一些值,所以我想我会创建一个可以像这样使用的辅助函数

const a = new ObjectA();
const b = new ObjectB();

function f() {
  this.a.b.c = 10;
};

f.call(a);
f.call(b);

我将如何记录该函数 f 以便它仅用于 ObjectA 和 ObjectB?

在写这篇文章时,我意识到我可以创建一个具有此方法的父对象,然后像往常一样记录它,但在我目前的情况下,我觉得它有点过度设计。

标签: javascriptjsdoc

解决方案


你可以使用一个简单的联合类型,结合 @this,它看起来像这样@this {(ObjectA|ObjectB)}。正如@VLAZ所说;您可能更喜欢转换为使用参数。

/** @param {(ObjectA|ObjectB)} foo */
function f(foo) {
  foo.a.b.c = 10;
};

在 Closure Compiler 中阅读有关类型的更多信息


推荐阅读