Object(obj)=== obj做什么?

时间:2014-06-27 21:16:11

标签: javascript

obj != null;

不同

我知道obj != null将检测任何允许在其上具有属性的内容为null,而undefined是唯一不能拥有属性的两个值。

这与

有何不同

Object(obj) === obj;

2 个答案:

答案 0 :(得分:7)

Object(obj) === obj测试obj是对象还是原语,对于字符串也是如此。

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

确定值是否可以 并记住 指定的属性非常有用。

尝试使用属性时nullundefined完全错误,这就是obj != null仍然有用的原因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'

参考:

objnullundefined时,Object(obj) returns a new Object()

  

1)如果 value nullundefined或未提供,则创建并返回一个新的Object对象,就像调用标准的内置Object构造函数一样使用相同的参数(15.2.2.1)。

并且,原始布尔值,字符串和数字通过ToObject()被加入到它们的对象类型中,它们不等于它们的原始等价物:

  

2)返回ToObject)。

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

答案 1 :(得分:-2)

身份(===。!==)

这些运算符的行为与相等运算符完全相同,但不进行类型转换,并且类型必须相同才能被认为是相等的。

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

Nice Stack溢出链接 Which equals operator (== vs ===) should be used in JavaScript comparisons?

希望有所帮助