JS函数创建的过程:
1、新建Object对象F,类型设置为Function
2、设置F.__proto__ = Function.prototype
3、设置F.constructor = Function
4、新建Object对象temp(也就是后来的F.prototype),使temp.constuctor=F,完成函数创建
我只说了表象,复杂的内部实现,等以后再深究了。。。。
代码表示如下(借用大神代码):
F = new Object(); //F.cons F.[[Class]] = "Function"; //类型为Function F.[[Prototype]] = Function.prototype; //F.__proto__ === Function.prototype F.[[Call]] = internalCall; F.[[Construct]] = internalConstructor; F.[[Scope]] = currentContext.ScopeChain.concat(); F.length = FormalParameterNum; temp = new Object(); //构造F.prototype temp.constructor = F; // F.prototype.constructor === F F.prototype = temp; //将新建的temp对象赋值给F.prototype return F;