Javascript 当bar.constructor==对象为true时?

Javascript 当bar.constructor==对象为true时?,javascript,Javascript,在 下面是一个问题 使用typeof bar==“object”来 确定条形图是否为对象?如何避免这一陷阱 在其答案中,有以下陈述 However, there’s one other alternative that returns false for nulls, arrays, and functions, but true for objects: console.log((bar !== null) && (bar.constructor === Object));

下面是一个问题

使用typeof bar==“object”来 确定条形图是否为对象?如何避免这一陷阱

在其答案中,有以下陈述

However, there’s one other alternative that returns false for nulls,
arrays, and functions, but true for objects:

console.log((bar !== null) && (bar.constructor === Object));
但是当我尝试我的代码时

var myObj = 
    {
        name: "blah"
    }

var bar =3;

console.log(typeof bar.constructor)
console.log(typeof myObj.constructor)
它以
函数的形式为两个
控制台提供输出。log

我的问题是什么类型的对象将具有
(bar.constructor==Object)
作为
true

“我的问题是什么类型的对象将具有
(bar.constructor==Object)
作为
true
?”

通常,直接从
Object.prototype
继承的对象,而不是一些中间构造函数的
.prototype
null

请注意,直接从
Object.prototype
继承的对象,但使用其自身的值(不指向
Object
的值)对
.constructor
属性进行阴影处理,当然会导致相等比较的
false
结果

var o={};
console.log(o.constructor==Object);//真的
o、 构造函数=“foo”;
console.log(o.constructor==Object);//错误
“我的问题是什么类型的对象将具有
(bar.constructor==Object)
作为
true
?”

通常,直接从
Object.prototype
继承的对象,而不是一些中间构造函数的
.prototype
null

请注意,直接从
Object.prototype
继承的对象,但使用其自身的值(不指向
Object
的值)对
.constructor
属性进行阴影处理,当然会导致相等比较的
false
结果

var o={};
console.log(o.constructor==Object);//真的
o、 构造函数=“foo”;

console.log(o.constructor==Object);//false
您在这里混淆了两件事
bar.constructor===Object
true
,因为
constructor
实际上是Object
函数
,这就是它的
类型
是函数的原因。好吧,构造函数总是一个函数。@erhesto:几分钟前我就注意到了。我的问题不对。无法删除。您在这里混淆了两件事
bar.constructor===Object
true
,因为
constructor
实际上是Object
函数
,这就是它的
类型
是函数的原因。好吧,构造函数总是一个函数。@erhesto:几分钟前我就注意到了。我的问题不对。无法删除。