Function与Object
JavaScript
中内置了两个顶级对象Function
、Object
,Object
是所有对象的基类,而所有的构造函数同时又是Function
对象的实例。
Object
JavaScript
中的所有对象都来自Object
,所有对象从Object.prototype
继承方法和属性,尽管它们可能被覆盖,例如其他构造函数在原型中实现自己的toString()
方法。Object
原型对象的更改将传播到所有对象,除非这些受到更改的属性和方法沿原型链被覆盖。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| var a = function(){} var b = new Array(1); var c = new Number(1);
console.log(a.__proto__.__proto__ === Object.prototype); console.log(b.__proto__.__proto__ === Object.prototype); console.log(c.__proto__.__proto__ === Object.prototype);
console.log(a.__proto__ === Function.prototype); console.log(Function.prototype.__proto__ === Object.prototype); console.log(b.__proto__ === Array.prototype); console.log(Array.prototype.__proto__ === Object.prototype); console.log(c.__proto__ === Number.prototype); console.log(Number.prototype.__proto__ === Object.prototype);
console.log(a instanceof Object); console.log(b instanceof Object); console.log(c instanceof Object);
|
Function
JavaScript
中的所有的构造函数都继承自Function
,包括Object
构造函数,Function
构造函数也继承于自己,当然Function
也是继承于Object.prototype
,可以说是先有的Object.prototype
, Object.prototype
构造出Function.prototype
,然后Function.prototype
构造出Object
和Function
。
1 2 3 4 5 6 7 8 9 10 11 12 13
| var a = function(){}
console.log(a.__proto__ === Function.prototype); console.log(Object.__proto__ === Function.prototype); console.log(Function.__proto__ === Function.prototype); console.log(Function.prototype.__proto__ === Object.prototype);
console.log(a instanceof Function); console.log(Object instanceof Function); console.log(Function instanceof Function);
|
总结
- 一切对象都继承于
Object
,都是从Object.prototype
继承方法和属性。
- 一切构造函数包括
Object
与Function
,都继承于Function
,最终继承于Object
。
参考
1 2 3 4 5 6
| https://www.cnblogs.com/tiancai/p/7463252.html https://www.cnblogs.com/yf2196717/p/10989466.html https://www.cnblogs.com/ioveNature/p/6880176.html https://www.cnblogs.com/tiffanybear/p/11320651.html https://blog.csdn.net/backee/article/details/83378772 https://blog.csdn.net/weixin_34237596/article/details/88026745
|