在js模块模式中实现函数

时间:2016-07-26 21:21:23

标签: javascript

我有一堆js代码,我试图用模块模式包装:

(function(){

function closeClicked(closeButton)
{
//do some stuff
}
//some more js code

}());

html调用者的定义如下:

<button type="button" onclick="closeClicked(this)">
<span aria-hidden="true">×</span></button>

代码将一些html注入到页面上的元素中,而html中的按钮调用js函数。这可以按预期工作,但是当所有代码都包装为模块时,找不到该函数。当此代码作为模块包装时,是否需要以不同方式定义或调用函数?

1 个答案:

答案 0 :(得分:0)

这是设计的。关闭时无法访问闭包中的变量。

在模块模式中,您将展示包含您的功能的模块。在这种情况下,它看起来像这样:

var myModule = (function(){

    function closeClicked(closeButton)
    {
    //do some stuff
    }

    //some more js code

    return {
        closeClicked: closeClicked
    }
}());

myModule将是从外部函数返回的对象。然后你会引用myModule.closeClicked