js中对象与函数的关系
2019-02-14 本文已影响0人
哈森森
首先什么是对象?根据W3C上面的解释JS中所有事物都是对象,对象是拥有属性和方法的数据,由此可以看出基本值类型不是对象(number、string、Boolean、Undefined),剩下的引用类型(函数、数组、null...)都是对象,也有人说对象是若干属性的集合。
对象是通过函数创建的,而函数又是一种对象。那么这是为什么呢?这就牵扯到prototype原型。
1、函数是一种对象
function test() {};
console.log(test instanceof Object); // true
很明显函数是一种对象,但你不能说函数是对象的一种。因为他俩之间是没有包含关系的。
对象都是通过函数创建的
先来看一个例子
function test() {
this.name="哈哈"};vartest2=new test();
console.log(test2 instanceof Object); //true
这个例子可以说明对象可以被函数创建。那为什么要说对象都是通过函数创建的,那对象字面量是不是也是通过函数来创建的,答案是肯定的,这是一种语法糖方式。举个简单的例子
varobj={
name:"哈哈",
age:"18"}varobj=new Object()
obj.name="哈哈";
obj.age="18";
上面的对象字面量其实是通过下面的构造函数来创建的。而其中的Object是一种函数:
console.log(typeofObject)//function
prototype原型??