对于函数的理解,首先看一个函数定义:
function functionDefined(){}
显而易见,functionDefined 为函数名字,在js中为指向这个函数体的指针,代表这个函数的指针的变量,并且和原始数据类型一样存储在栈中。而functionDefined函数体则存储在堆中。每当new出一个函数的实例,就会利用构造函数new出实例,并且存储在堆中。也就是对functionDefined函数体的拷贝并且进行存储。
知道了这个,我们再来看对象冒充:
function functionDefined(color){}
function createObject(){
this.functionDefinedCopy=functionDefined;
this.functionDefinedCopy('color');
delet this.functionDefinedCopy;
}
在此函数中将functionDefined的值传给了functionDefinedCopy,使得functionDefinedCopy指向了函数体。并以此来冒充functionDefined。执行其中的方法。