Der folgende Code protokolliert in Chrome V8 "false", meldet sich jedoch in Babel als "true" an. Die feedback from Google sagte, dass die Protokollierung falsch ist, wie es sein soll, während die Protokollierung wahr ist, ist ein Fehler von Babel. Ich schaute in die ES6 Spezifikationen und konnte immer noch nicht den Mechanismus dahinter verstehen. Irgendwelche Gedanken würden geschätzt werden!Super() übergibt keine Argumente beim Instanziieren einer aus Objekt in Chrome V8 erweiterten Klasse
class NewObj extends Object{
constructor(){
super(...arguments); // In V8, after arguments === [{attr: true}]
// is passed as parameter to super(),
// this === NewObj{} in V8;
// but this === NewObj{attr: true} in Babel.
}
}
var o = new NewObj({attr: true});
console.log(o.attr === true);
Ich verstehe die Antwort auf diesen Fehler nicht; Ein 'super() 'Aufruf darf ganz gewiß eine Argumentliste enthalten, und der Object Konstruktor sollte auf sein Argument achten. – Pointy
Es ist ein Chromium Bug. Ich habe es auf Microsoft Edge getestet. Es gibt "wahr" zurück. – Lewis