Javascript 构造函数包裹匿名函数

var haha = function (x) {
    (function (x) {
        return window.alert(x);
    })(x)
};
var hehe = new haha('Hello World');//立即执行并弹框'Hello World'
typeof(hehe);//返回一个'object'对象集

这是一个可以"重用"的匿名函数吗...?

这整个过程怎么解析...?

Sooningr
浏览 1202回答 1
1回答

pardon110

仅仅只是初始化,一次性的东西,用过就丢。你new与不new 效果一样,即都输出同样的内容。唯一不同的在于,你使用new操作符后,函数被当作构造函数(函数在不同的场景有不同身份),typeof 实例  返回object 类型,不type of haha 为function类型(js引擎执行时使用了包装器Function)。至于过程解析:先是词法分析,后活动对象执行完毕。构造函数内等价于下。var haha = function (x) {     function t(x) {         return window.alert(x);     }     t(x); };至于重用,那倒不至于,很明显匿名函数并没有作用到实例对象上。只是初始化时执行了一个函数,一个将构造参数绑定到匿名函数的参数的函数。相反你代码中的匿名函数倒更偏向于‘构造函数的私有方法(如果将构造函数看作一个类的话)'.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript