基本的javascript语法问题

时间:2010-12-17 03:48:31

标签: javascript

以下javascript代码是什么意思?我想它是在一个函数中定义一个函数,使它看起来像OOP?为什么函数可以返回多个函数?最后的括号是什么?

var grid_ui = function () {

    function setup_data_source() {}

    return {
        init: function () {},

        set_ds: function(rpt_headers, rpt_rows) {}
    } // return
}();

3 个答案:

答案 0 :(得分:4)

{ }表示法称为对象文字。它与:

相同
a = new Object();
a.init = function() { };
a.set_ds = function(...) { };
return a;

return { }返回一个对象。

function () { ... }();是一个自我调用的函数:它创建一个匿名函数,它们会立即调用它。

在您的代码中,自调用函数返回一个函数对象,这是一个名称空间模式。 grid_ui的值现在包含{ init: ..., set_ds: ... }return中提到了这一点。

这些概念很难在一个SO答案中解释,因此我将为您提供一些链接:

答案 1 :(得分:2)

它定义了一个函数,然后调用它并获取返回值并将其赋值给grid_ui

grid_ui的值现在是包含键initset_ds的对象(也称为字典)。

在javascript中,您可以在函数中定义函数并将函数赋值给变量。

现在,您可以拨打grid_ui.init()grid_ui.set_ds("test", 1)等电话。

答案 2 :(得分:0)

是OOP。函数是JavaScript中的对象。

此代码表示存在一个变量grid_ui,该变量的计算结果为具有两个“公共”函数init和set_ds的对象。 init和set_ds还有一个上下文,其中包含一个“私有”函数setup_data_source。

没有括号。