// Object values.
...[{}, [], /(?:)/, function(){}, new Proxy({}, {})],
// Intl objects.
...[].concat(...intlConstructors.map(ctor => {
let args = []; if (ctor === Intl.DisplayNames) { // Intl.DisplayNames can't be constructed without any arguments.
args = [undefined, {type: "language"}];
}
return [ // Instance of an Intl constructor. new ctor(...args),
// Instance of a subclassed Intl constructor. newclassextends ctor {}(...args),
// Object inheriting from an Intl constructor prototype.
Object.create(ctor.prototype),
// Intl object not inheriting from its default prototype.
Object.setPrototypeOf(new ctor(...args), Object.prototype),
];
})),
];
}
// Invoking [[Call]] for Intl.Collator always returns a new Collator instance. for (let thisValue of thisValues()) {
let obj = Intl.Collator.call(thisValue);
assertEq(Object.is(obj, thisValue), false);
assertEq(obj instanceof Intl.Collator, true);
// Ensure Intl.[[FallbackSymbol]] wasn't installed on |thisValue|. if (IsObject(thisValue))
assertEqArray(Object.getOwnPropertySymbols(thisValue), []);
}
// Intl.Collator doesn't use the legacy Intl constructor compromise semantics. for (let thisValue of thisValues()) { // Ensure instanceof operator isn't invoked for Intl.Collator.
Object.defineProperty(Intl.Collator, Symbol.hasInstance, {
get() {
assertEq(false, true, "@@hasInstance operator called");
}, configurable: true
});
let obj = Intl.Collator.call(thisValue); delete Intl.Collator[Symbol.hasInstance];
assertEq(Object.is(obj, thisValue), false);
assertEq(obj instanceof Intl.Collator, true);
}
if (typeof reportCompare === "function")
reportCompare(true, true);
Messung V0.5
¤ Dauer der Verarbeitung: 0.21 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.