javascript中Function与Object
Posted 我爱小明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中Function与Object相关的知识,希望对你有一定的参考价值。
1、 先来一段代码:
console.log(Function); // function Function() { [native code] } console.log(Object); // function Object() { [native code] } console.log(Function.prototype); // function () {} console.log(Object.prototype); // Object {} console.log(Function.__proto__); //function () {} console.log(Function.__proto__.__proto__); // Object {} console.log(Function.__proto__.__proto__.__proto__); // null console.log(Object.__proto__); //function () {} console.log(Object.__proto__.__proto__); // Object {} console.log(Object.__proto__.__proto__.__proto__); // null
console.log(Function.constructor === Function); // true
console.log(Object.constructor === Function) // true
结论:
a、构造器Function的构造器是它自身,因此:Function.constructor === Function;构造器Object的构造器是它自身,因此:Object.constructor === Function;ps:所有构造器的constructor都指向Function,Function是一个顶级函数;
b、构造器Function的__proto__是一个匿名空函数function(){};
c、匿名空函数function(){}的__proto__指向Object的prototype;
d、Object的__proto__指向Function的prototype,也就是匿名空函数function(){};
Object继承自己,Funtion继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象。这一点很特别。所有的函数都是对象,可是并不是所有的对象都是函数。
来自知乎:
Object.prototype是所有对象的根源
Object.prototype只是挂载在Object函数对象上
Function.prototype构造自Object.prototype
Function.prototype 只是挂载在Function函数对象上
Object函数和Function函数构造自Function.prototype
Object字面量对象{}构造自Object.prototype
Object字面量对象{}.__proto__(原构造对象) === Object.prototype
Function函数 和 自定义函数 都继承(构造而成)自Function.prototype
Function.prototype 和 Function.__proto__(原构造对象)相同
所以,是先有的Object.prototype,再有的Function.prototype,再有的Function和Object函数对象
以上是关于javascript中Function与Object的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中var变量引用function与直接声明function
在javascript中Function和function有啥区别?
JavaScript中Function函数与Object对象的关系