TypeError:非法构造函数 - 但我没有构造任何东西

问题描述 投票:0回答:1

我正在使用以下 JS 代码(在 Thunderbird 115.2.0 中):

Foo.createTextWalker = function (doc, node, filter) {
  return doc.createTreeWalker(node, NodeFilter.SHOW_TEXT, filter);
};

Foo.bar = function (document, nodeFilter, element, expression) {
  let textWalker = Foo.createTextWalker(document, element, nodeFilter);
  let node;
  while (node = textWalker.nextNode()) { // line XXX
    // do stuff 
  }
  // do other stuff
};

这会引发异常:

TypeError: Illegal constructor.           foo.js:XXX:28

我不明白为什么会发生这种情况。

textWalker
TreeWalker
类型的对象;为什么调用它的
nextNode
方法会被解释为构造?

javascript ecmascript-6 typeerror thunderbird
1个回答
0
投票

看起来 - 虽然我还没有 100% 验证这一点 - 异常是从 within

nativeCode()
抛出的,很可能是在尝试应用无效的过滤器参数时。

现在,

nextNode()
是一个具有本机代码的函数,因此异常的跟踪仅到达调用它的位置可能是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.