Javascript中的函数(Function)与对象(Object)的关系

吴统威 on 编程语言 前端编程 HTML/CSS/JAVASCRIPT | 2015-12-17 08:51:16.0

今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我.


注意:官方定义: 在Javascript中,每一个函数实际上都是一个函数对象.


我们先来看最简单的两个代码,也是最容易理解的.


function fn(){}

var obj = {}

console.log(fn instanceof Function)//true

console.log(obj instanceof Object)//true

console.log(fn instanceof Object)//true

console.log(obj instanceof Function)//false


前面两个打印的效果,大家都容易理解.后面 fn instanceof Object 是为true.这里也是一样,从函数的定义来说: 在javascript中一切函数实际都是函数对象. 所以为true就不奇怪了.obj instanceof Function 为false,当然不奇怪了.因为他是一个对象,不是函数.


我们再来看一个代码


console.log(Function instanceof  Object, 0, 0); // true

console.log(Object instanceof Function, 0, 0);  // true


代码很简单.运行结构两个都是为true,为什么呢? 第一个用函数的定义来说,(javascript中函数实际也是一个函数对象),当然为true,那第二个呢?对象也是函数?

Object也是函数.因为Object的结构是function Object(){native code}.

这种形式,很清晰的就是声明的一个Object函数,当然就是函数了,所以两个都是为true.

他们两个Function和Object函数实现代码,那当然是不一样了.他们是怎么实现的,那我们就不去详细琢磨了,如果想琢磨的,就可以了解浏览器的相关知识了.


希望大家能理解函数与对象的关系,不明白的给公众号留言或者加群:186659233问我们