js的原型和闭包2

in js with 0 comment views: 544 times

原文: 深入理解javascript原型和闭包(2)——函数和对象的关系

函数就是对象的一种,因为通过instanceof函数可以判断。

var fn = function(){}
console.log('-->>',fn instanceof Object)

QQ20180411-220457.png
函数就是一种对象,但是函数却不像数组一样---你可以说函数是对象的一种,因为数组就像是对象的一个子集一样。

但是函数和对象之间,却不仅仅是一种包含和被包含的关系,函数和对象之间的关系比较复杂,甚至有点像鸡生蛋蛋生鸡的逻辑。

先看一个小例子

function Fn (){
  this.name = 'weber';
  this.year = 2018;
}
var fn1 = new Fn()

上面的这个例子很简单,他能说明: 对象可以通过函数来创建。

对象都是通过函数来创建的

var obj = {a: 10,b:20}
var arr = [3,'c',true]

上面的例子中对象的创建过程其实是使用了js的语法糖,实际上的创建过程如下:

var obj = new Object();
obj.a = 10;
obj.b = 20;

var arr = new Array();
arr[0] = 3;
arr[1] = 'c';
arr[2] = true;

其中的Object 和Array 都是函数:

console.log('Object-->>',typeof Object)
console.log('Array-->>',typeof Array)

QQ20180411-222116.png
对象是函数创建的,而函数却又是一种对象。

Responses