Javascript 如何理解Object.hasOwnProperty(“构造函数”)

Javascript 如何理解Object.hasOwnProperty(“构造函数”),javascript,Javascript,我是JavaScript新手,有一个问题让我很困惑 Object.constructor是一个函数,但Object.hasOwnProperty(“constructor”)==false。为什么? 我们知道Object的prev为null,可能是Object.prototype.\uuuu proto\uuuu==null。如何添加对象的“构造函数”属性 对象。构造函数不是函数Object.prototype.constructor是,而Object本身就是一个构造函数。从: 在非构造函数上下

我是JavaScript新手,有一个问题让我很困惑


Object.constructor
是一个函数,但
Object.hasOwnProperty(“constructor”)==false
。为什么?


我们知道Object的prev为null,可能是
Object.prototype.\uuuu proto\uuuu==null
。如何添加对象的“构造函数”属性

对象。构造函数
不是函数
Object.prototype.constructor
是,而
Object
本身就是一个构造函数。从:

在非构造函数上下文中调用时,对象的行为与新对象()相同

要查看,请尝试:

Object.hasOwnProperty("constructor") == false
Object.prototype.hasOwnProperty("constructor") == true
typeof Object == "function"
typeof (new Object) == "object"

当您调用Object.hasOwnProperty(“构造函数”)时,您正在测试对象上是否存在属性“构造函数”。也就是说,您不会查找_proto______________________________________。对于对象,“构造函数”属性在对象上不存在,它是一个继承的属性->查看对象。\ uuuu proto\uuu.constructor and Object。\ uuuu proto\uu.hasOwnProperty('constructor'))

注意:对象。uuu proto_uuuu==Function.prototype/=>true

拍摄自


正如我们所看到的,对象并没有自己的属性“constructor”,所以每当我们执行b.constructor时,它都会转到它的原型并在原型中查找constructor属性。但是b.hasOwnProperty('constructor')将失败,但是b.prototype.hasOwnProperty('constructor')将返回true。

对象
是一个函数。执行
f=function(){}
时,函数本身没有属性“构造函数”。至少在Chrome中,Function.\uuuu proto\uuuuu返回空,并且空有一个“constructor”属性(这解释了hasOwnProperty的差异)。我不确定这在ECMAScript规范中是如何编码的。
typeof Object.constructor==“function”;//true
引号中说
Object()
(即..when called..)等同于
newobject()
。但问题中没有调用称为Object的函数;有没有新的。