以神秘结束:
究竟是Object.__proto__
什么?
几乎所有内置和用户定义函数的Object
构造函数都继承自.Function.prototype
这个对象 ( Function.prototype
)在规范中被描述为一个Function 对象,但很明显,一个对象不能从它自己继承,这就是它继承自的原因Object.protoype
。
你的测试:
Object.__proto__ instanceof Function; // false, which is equivalent to:
Function.prototype instanceof Function; // false
只是告诉我们该Function.prototype
对象不在其自身的原型链上Function.prototype
:
Function.prototype.isPrototypeOf(Function.prototype); // false, equivalent to:
Object.prototype.isPrototypeOf.call(Function.prototype, Function.prototype);
正如我之前所说,如果您有兴趣,在规范中描述的这个对象具有以下特征:
它是一个函数对象(实现[[Call]]
内部方法)。
typeof Function.prototype; // "function"
其[[Class]]
内部属性值为"Function"
。
Object.prototype.toString.call(Function.prototype); // "[object Function]"
其[[Prototype]]
内部属性的值指向Object.prototype
(如您现在所知)。
Object.prototype.isPrototypeOf(Function.prototype); // true
可以使用任意数量的参数调用。
它总是返回undefined
值。
它的length
属性是0
。
其[[Extensible]]
内部属性的初始值为true
。