帮忙看一段js的moudule函数扩展

var blogModule = (function (my) {
    my.AddPhoto = function () {
        //添加内部代码  
    };
    return my;
} (blogModule)); 

请问一下,匿名函数‘my’是传入的值,那后面的blogModule是传出还是传入?最后return my还跟blogMoudule有关系吗?越来越对匿名函数自执行的理解不清晰

阅读 2.1k
3 个回答

分解来看每一个名词的意思,
首先是 var 定义的 blogModule 变量:

var blogModule = (function (my) {...} (blogModule)); 

简化一下就知道它是用来接收一个函数调用的返回值的变量,并且这个函数使用了()表达式包裹起来,是将函数调用作为一条表达式的意思。

再来是第二个 blogModule,它是传入匿名函数的实参,即将要传入的模块对象:

function (my) {...} (blogModule)

最后是 my,它是匿名函数定义的形参,接收传入的实参,也就是这个例子的 blogModule

function (my) {
    my.AddPhoto = function () {
        //添加内部代码  
    };
    return my;
};

所以在函数体中对 my 的属性或方法的增删改其实都是对传入 blogModule 的操作。最后返回的 my,也是返回了修改后的 blogModule 对象。

传入呀,相当于

var blogModule = function (my) {
    my.AddPhoto = function () {
        //添加内部代码  
    };
    return my;
};
blogModule(blogModule)

传入值, 相当于把自己传入然后给自己添加了个方法, 然后return将对象重新赋值给变量~

如答案对你有所帮助请帮忙点下 upvote 或采纳~ 谢谢~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题