Was macht 'Object.is()' in ES6?

Verständnis der Object.is() Funktion in ES6

Die Object.is() Funktion ist ein integrierter JavaScript-Operator, der in der ECMAScript 6 (ES6) Spezifikation eingeführt wurde. In einfacher Form prüft die Object.is() Methode, ob zwei Werte identisch sind.

Die Implementierung dieser Funktion ist subtiler als der einfache Vergleich ===. Die Methode hält sich sehr eng an die Definition von "Sameness" in JavaScript, die eine Kombination aus loser Typgleichheit und der Verwendung von Special-Case-Regeln für bestimmte Werte umfasst:

  • Beide undefined
  • Beide null
  • Beide true oder false
  • Beide Zeichenketten derselben Länge mit den exakt gleichen Zeichen
  • Beide genau dieselbe Nummern, einschließlich +0 ist nicht gleich -0 und NaN ist gleich NaN
  • Beide das gleiche Objekt

Anwendung von Object.is()

Hier sind ein paar Beispielszenarien, die Object.is() verwenden:

console.log(Object.is('foo', 'foo'));     // true
console.log(Object.is(window, window));   // true

console.log(Object.is('foo', 'bar'));     // false
console.log(Object.is([], []));           // false

var foo = { a: 1 };
var bar = { a: 1 };
console.log(Object.is(foo, foo));         // true
console.log(Object.is(foo, bar));         // false

console.log(Object.is(null, null));       // true

// Nachfolgende besonderheiten sind falsch mit == und === 
console.log(Object.is(0, -0));            // false
console.log(Object.is(-0, -0));           // true
console.log(Object.is(NaN, 0/0));         // true

Von allen obigen Beispielen prüft Object.is() die Identität von zwei Werten auf eine Weise, die genauer ist als die === Methode, wobei vor allem die Fälle 0 und -0 sowie NaN behandelt werden.

Best Practices und zusätzliche Einblicke

Obwohl Object.is() und === in vielen Alltagsfällen ähnlich reagieren, ist Object.is() besonders nützlich, wenn eine strenge Gleichheit erforderlich ist. Es ist besonders nützlich, wenn Sie mit speziellen JavaScript-Werten wie NaN und -0 arbeiten. Indem Sie diese Funktion verwenden, können Sie übermäßige Fehler oder falsche Identitäten vermeiden, die aus der schlampigen Gleichheit von JavaScript entstehen können.

Es ist wichtig zu beachten, dass ES6 Teil der modernen JavaScript-Sprachversionen ist, daher ist die Object.is() Funktion möglicherweise nicht in älteren Browsern verfügbar, die nur ES5 unterstützen. In solchen Fällen kann ein Polyfill verwendet werden.

Finden Sie das nützlich?