首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象( obj ) === obj做什么?

对象( obj ) === obj做什么?
EN

Stack Overflow用户
提问于 2014-06-27 21:16:10
回答 2查看 714关注 0票数 8

obj != null;不同

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

这与

Object(obj) === obj;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-27 21:28:00

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

代码语言:javascript
复制
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仍然有用的原因,没有原始值能够保存属性。

代码语言:javascript
复制
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时,new Object()

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

并且,通过ToObject()将原始布尔、字符串和数字装箱到它们的对象类型中,这些对象类型并不等于它们的原语等价物:

2)返回ToObject(值)。

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2014-06-27 21:19:58

身份(===. )!==)

这些运算符的行为与相等的运算符相同,除非没有进行类型转换,而且类型必须相同才能被视为相等。

教程/jsgrpcompison.htm

漂亮的堆栈溢出链接哪一个等于运算符(==和===)应该用于JavaScript比较?

希望它能帮上忙

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24460874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档