Javascript 数组算法是否失败?/什么是新目标?

Javascript 数组算法是否失败?/什么是新目标?,javascript,ecmascript-6,Javascript,Ecmascript 6,问题涉及数组构造函数算法。 算法的结果不太清楚: 如果NewTarget未定义,则将NewTarget设为活动函数对象,否则将NewTarget设为NewTarget。 这适用于我们将此构造函数作为函数调用,并且活动函数对象为null的情况。当我们从脚本或模块下调用它时,它为null 去排队: 让普罗托去吧?GetPrototypeFromConstructor新目标,%ArrayPrototype%。 转到算法GetPrototypeFromConstructor并找到以下内容: 断言:Is

问题涉及数组构造函数算法。

算法的结果不太清楚:

如果NewTarget未定义,则将NewTarget设为活动函数对象,否则将NewTarget设为NewTarget。 这适用于我们将此构造函数作为函数调用,并且活动函数对象为null的情况。当我们从脚本或模块下调用它时,它为null

去排队:

让普罗托去吧?GetPrototypeFromConstructor新目标,%ArrayPrototype%。 转到算法GetPrototypeFromConstructor并找到以下内容:

断言:IsCallable构造函数为true。 不能有null,因为null是不可调用的

我们得出以下结论之一:

我们误解了什么。 规格误差
这里出了什么问题?

关于新目标的困惑是我认为解决这个难题的关键。这条规则的基本含义是:

如果数组作为普通函数调用,那么newTarget的值就是数组构造函数 如果数组作为新数组调用,那么newTarget的值也是数组构造函数 为什么??嗯,当调用[[Construct]]操作时,第二个参数给出了newTarget。对[[Construct]]操作的调用将构造函数本身作为该参数传递。然而,对数组的普通调用并不涉及该操作;这只是一个普通的电话。在这种情况下,NewTarget是未定义的,所以规则说NewTarget是活动函数上下文。因为我们讨论的是数组构造函数中发生的事情,很明显,活动函数上下文就是该函数;否则我们为什么要读规范的那一章


为什么用这样的措辞?我不知道。

关于什么是新目标这一令人困惑的问题,我认为是解决这个难题的关键。这条规则的基本含义是:

如果数组作为普通函数调用,那么newTarget的值就是数组构造函数 如果数组作为新数组调用,那么newTarget的值也是数组构造函数 为什么??嗯,当调用[[Construct]]操作时,第二个参数给出了newTarget。对[[Construct]]操作的调用将构造函数本身作为该参数传递。然而,对数组的普通调用并不涉及该操作;这只是一个普通的电话。在这种情况下,NewTarget是未定义的,所以规则说NewTarget是活动函数上下文。因为我们讨论的是数组构造函数中发生的事情,很明显,活动函数上下文就是该函数;否则我们为什么要读规范的那一章


为什么用这样的措辞?我不知道。

问题是什么?我不明白你在问什么问题。你到底认为什么是错的?为什么你认为它是空的?活动函数对象不会为空。但数组构造函数是函数对象。@Pointy我的意思是,活动函数对象应用于我们作为函数调用的构造函数数组。问题是什么?我不明白你在问什么问题。你到底认为什么是错的?为什么你认为它是空的?活动函数对象不会为空。但数组构造函数是函数对象。@Pointy我还指活动函数对象应用于我们作为函数调用的构造函数数组。