1
Function.prototype // function Empty() {}

这有什么意义?例如,如果我们要取Number对象,我们可以看到他的原型 ( Number.__proto__) 是Function.prototype其中包含类似applyand的方法callNumber.apply(..)如果 Number 的原型是一个空函数而不是像所有其他原型一样的常规原型对象,我该如何使用?(数字原型、字符串原型、任何其他自定义原型都是对象。甚至 Object.prototype 也是对象)。

在那之后,这有什么意义Object.__proto__ == Function.prototype?对象应该是最高的对象,继承自Function.prototype时如何Function继承.. Object.prototype

Object instanceof Function // true
Function instanceof Object // of course true
Function instanceof Function // true
4

1 回答 1

1

Miklos 是对的,但更简单地说:

Object.__proto__ == Function意味着它Object本身是一个函数,因为它是构造函数。这并不意味着继承自的对象Object将继承Function。一个对象继承了一个构造函数的.prototype,而不是它的.__proto__

换句话说

function Car (){}
inst = new Car ();
// inst inherits from Car.prototype
// inst.__proto__ == Car.prototype;
// Car inherits from Function.prototype because it is a function
// Car.__proto__ == Function.prototype;

但这并不意味着inst继承自,Function.prototype你不能调用它。applycall

// This means that Everything that inherits from function will
console.log(`Function.prototype`) === function Empty() {}

另一个转折

// This means that the constructor function (Object)
// inherits from `Function.prototype` That is, you can use call and apply,
// And at a lower language level, you can use () and new on it.
Object instanceof Function // true

// It doesn't mean that instances created from Object inherit 
// from Function.prototype (can't use call/apply)
(new Object()) instanceOf Function ? // false
(new Object()).apply === undefined ? // true

// This means that functions themselves are objects, everything is an object
// They have properties like hasOwnProperty and isPrototypeOf
// Not that everything that inherits from Object.prototype will also inherit
// From Function.prototype
Function instanceof Object // of course true
于 2013-07-27T09:14:25.063 回答