为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 构造函数包裹匿名函数

Javascript 构造函数包裹匿名函数

Sooningr 2017-12-02 10:51:04
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);
};

至于重用,那倒不至于,很明显匿名函数并没有作用到实例对象上。只是初始化时执行了一个函数,一个将构造参数绑定到匿名函数的参数的函数。相反你代码中的匿名函数倒更偏向于‘构造函数的私有方法(如果将构造函数看作一个类的话)'.

查看完整回答
1 反对 回复 2017-12-02
  • 1 回答
  • 1 关注
  • 1201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信