所有新创建的对象(使用Object.create(null)创建的对象除外)在其原型链中包含对象Object.prototype
。这些新创建的对象可以调用newObject.toString()
,因为toString
上定义了Object.prototype
。
然而,Object的内部原型据说是null
。如果是这样的话,为什么我能做到这一点:
Object.toString();
// prints: "function Object() { [native code] }"
也许我已经回答了我自己的问题。在toString
构造函数中是否也定义了Object
?
为什么?!
答案 0 :(得分:2)
> var obj = Object.create(null);
undefined
> obj.toString();
TypeError: undefined is not a function
> Object.toString();
"function Object() { [native code] }"
请参阅obj
创建时使用null
作为原型,因此当您在其上调用.toString()
时,将会发生错误。
但是Object
self是一个函数,其原型是一个Function对象,它具有.toString()
方法。
答案 1 :(得分:0)
对象的原型中不必存在可在对象上调用的函数。
举个简单的例子......
x = {}
x.y = function () { }
y
不在x
的原型中,但我可以使用x.y()
。