var haha = function (x) {
(function (x) {
return window.alert(x);
})(x)
};
var hehe = new haha('Hello World');//立即执行并弹框'Hello World'
typeof(hehe);//返回一个'object'对象集这是一个可以"重用"的匿名函数吗...?这整个过程怎么解析...?
1 回答

pardon110
TA贡献1038条经验 获得超227个赞
仅仅只是初始化,一次性的东西,用过就丢。你new与不new 效果一样,即都输出同样的内容。唯一不同的在于,你使用new操作符后,函数被当作构造函数(函数在不同的场景有不同身份),typeof 实例 返回object 类型,不type of haha 为function类型(js引擎执行时使用了包装器Function)。至于过程解析:先是词法分析,后活动对象执行完毕。构造函数内等价于下。
var haha = function (x) { function t(x) { return window.alert(x); } t(x); };
至于重用,那倒不至于,很明显匿名函数并没有作用到实例对象上。只是初始化时执行了一个函数,一个将构造参数绑定到匿名函数的参数的函数。相反你代码中的匿名函数倒更偏向于‘构造函数的私有方法(如果将构造函数看作一个类的话)'.
添加回答
举报
0/150
提交
取消