为JavaScript中的变量分配函数

时间:2015-05-28 13:10:50

标签: javascript function

function abc(){
    //multiple variables and functions
    a:function(){alert("a")};
}
function test(){
    var k=abc();
    k.a();
}

在上面的例子中,我有一个巨大的函数abc()被赋值给一个变量。我想调用可见的成员函数,如变量中的a()。这是否可以实现,请给我一个示例代码。

3 个答案:

答案 0 :(得分:7)

如果在函数后面加上括号,则可以将函数的结果赋值给变量。

如果要分配函数本身,只需省略括号:

var k = abc;
k.a();

修改

根据@Kuba Wyrostek的回答以及@Pointy的评论,a()函数不会被正确曝光。

您需要查看Module Pattern。您需要做的是为变量分配一个函数,并让该函数返回您希望能够在该函数之外使用的函数。这有助于封装

从评论中的代码中可以很难说出用户生成的代码究竟是什么,但我会尽我所能。

var abc = (function () {
    var grabApi,
        initialize;

    // Just an example of how to assign an existing function
    // to a property that will be exposed.
    grabApi = SCORM2004_GrabAPI();

    // This is an example of how to have a property that will be
    // exposed be a custom function passing a parameter.
    initialize = function(initString) {
        return SCORM2004_GrabAPI().Initialize(initString);
    };

    return {
        getApi: grabApi,
        init: initialize
    }
}());

然后,您可以在整个代码中使用此abc对象。同样,这是试图举例说明如何根据你的评论做我认为你想做的事情。

// Assign the SCORM2004_GrabAPI function to a variable.
var SCORM2004_objAPI = abc.getApi();

// Call the Initialize function with an empty string.
abc.init("");

答案 1 :(得分:1)

嗯......与@ krillgar的答案相反,我相信你期待你的abc()返回新物体。像这样:

function abc(){
    var privateVar;
    return {
    //multiple variables and functions
    a:function(){alert("a")}
    }
}
function test(){
    var k=abc();
    k.a();
}

答案 2 :(得分:0)

你应该把它变成一个对象。通过这种方式,您可以访问其属性a

var abc ={
    a:function(){alert("a")}
}
function test(){
    var k=abc;//Ofcrse remove the parenthesis 
    k.a();
}
test();