2014-06-27 13 views
5

unterscheidet sich von obj != null;Was bedeutet Object (obj) === obj do?

Ich weiß, dass obj != null etwas erkennt, die als null und nicht definierte Eigenschaften haben auf es erlaubt ist, die nur zwei Werte, die nicht Eigenschaften haben können.

Wie dies von unterscheidet

Object(obj) === obj;

+0

Das Ergebnis ist nicht wirklich das gleiche. Nehmen Sie zum Beispiel ein Primitiv für Strings oder Zahlen: Es ist! = Null, aber sein Gegenstück zum Objekt ist nicht === das Primitivformular. –

Antwort

6

Object(obj) === obj Tests hilft, ob obj ist ein Objekt oder eine primitive, in Ermangelung einer auch für Streicher usw.

console.log(Object('foo') === 'foo'); // false 
console.log(Object(true) === true); // false 
console.log(Object(null) === null); // false 

var obj = {}; 
console.log(Object(obj) === obj);  // true 

Es ist nützlich für die Bestimmung Wenn der Wert angegeben werden kann und merken Sie sich eine zugewiesene Eigenschaft.

Während null und undefined geradezu Fehler, wenn Eigenschaften zu verwenden versuchen, weshalb obj != null immer noch nützlich ist, no primitive values are able to hold onto properties.

var pri = 'foo'; 
pri.foo = 'bar';  // no error, but still... 
console.log(pri.foo); // undefined 

var box = Object(pri); 
box.foo = 'bar'; 
console.log(box.foo); // 'bar' 

Referenz:

Wenn objnull oder undefined ist, Object(obj) returns a new Object():

1) Wenn Wertnull ist, undefined oder nicht geliefert wird, und eine neue Rück Object-Objekt genau so, als ob der standardmäßige integrierte Object-Konstruktor ha d wurde mit den gleichen Argumenten aufgerufen (15.2.2.1).

Und primitive booleans, Strings und Zahlen in ihre Objekttypen über ToObject() sind eingerahmt, die ihre primitive Mittel nicht gleich sind:

2) Zurück ToObject (Wert).

console.log(typeof 'foo' === 'string');   // true 
console.log(typeof Object('foo') === 'object'); // true 

console.log('foo' instanceof String);   // false 
console.log(Object('foo') instanceof String); // true 
-2

Identität (===.! ==)

Diese Operatoren identisch zu den Gleichheitsoperatoren verhalten außer keine Typumwandlung durchgeführt wird, und die Typen muss gleich sein um gleichwertig zu sein.

http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm

Nizza Stack-Überlauf Link Which equals operator (== vs ===) should be used in JavaScript comparisons?

Hoffe, dass es

+2

Ich sehe nicht, wie dies die Frage beantwortet. Hier geht es nicht nur um! = Und! ==, sondern um 'x!= null' und 'Objekt (x) === x' –

+0

Erster Link gibt den grundlegenden JS-Operator Bedeutung und zweite Link (SO) Antworten erklärt viel besser. Diese beiden Links gaben mir eine überzeugende Antwort auf das Problem. – Kris

Verwandte Themen