Javascript 当bar.constructor==对象为true时?
在 下面是一个问题 使用typeof bar==“object”来 确定条形图是否为对象?如何避免这一陷阱 在其答案中,有以下陈述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));
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:几分钟前我就注意到了。我的问题不对。无法删除。