首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Underscore.js _.isObject =函数( obj ) {返回obj ===对象(Obj);};

Underscore.js _.isObject =函数( obj ) {返回obj ===对象(Obj);};
EN

Stack Overflow用户
提问于 2014-05-08 15:08:26
回答 2查看 2.5K关注 0票数 9

当我们查看Underscore.js源代码时,我们可以看到以下内容:

代码语言:javascript
复制
    _.isObject = function (obj) {
    return obj === Object(obj);
};

我知道很管用。

但为什么不用这个:

代码语言:javascript
复制
    _.isObject = function(obj){
    return typeof obj ==="object";
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-08 15:57:24

为什么不使用typeof obj === "object"

因为这不是我们想要测试的。_.isObject函数应该返回参数是否是引用值(即可以向其添加属性的对象)以及它是否为原语值。

运算符在这方面不可靠。它还为值"object"生成null,而不为可调用对象(即函数)生成"object"

相反,我们可以使用函数,它将尝试通过ToObject将它的参数“转换”给一个对象,并且在它已经是对象的情况下准确地产生这个参数。

票数 6
EN

Stack Overflow用户

发布于 2014-05-08 15:17:09

区别在于棘手的值nulltypeof null返回'object',这显然是相当混乱的,而不是期望的结果。

但是,使用带有null的对象构造函数将导致创建一个新对象(请参阅MDN)。这意味着您可以区分对象和null,这是typeof无法做到的。

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

https://stackoverflow.com/questions/23545656

复制
相关文章

相似问题

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