Javascript 如何理解Object.hasOwnProperty(“构造函数”)
我是JavaScript新手,有一个问题让我很困惑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本身就是一个构造函数。从: 在非构造函数上下
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的函数;有没有新的。