认识原型对象和原型链
在 javascript 中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象 Object和函数对象 Function
一般而言,通过 new Function 参省的对象时函数对象,其他对象都是普通对象。
举例说明:
1 | function f1(){ |
f1 属于函数的声明,最常见的函数定义,f2 实际上是匿名函数,属于函数表达式,f3 不常见,但也是一种函数对象。
Function 是 JS 的自带的对象,f1,f2 在创建的时候,JS 会自动通过 new Function()的方式来构建这些对象,因此这三个对象都是通过 new Function()创建的。
在 JavaScript 中创建对象的方式有两种:对象字面量和使用 new 表达式,o1 和 o2 的创建恰好对应了这两种方式,重点讲一下 03,如果用 java 和 c#的思路来理解的话,o3 是 f1 的实例对象,03 和 f1 是同类型,至少以前我是这么认为的,其实不然……
怎么理解呢?很简单,看 o3 是不是通过 new Fuction()产生的,显然不是,既然不是函数对象,那就是普通对象。