以下javascript代码是什么意思?我想它是在一个函数中定义一个函数,使它看起来像OOP?为什么函数可以返回多个函数?最后的括号是什么?
var grid_ui = function () {
function setup_data_source() {}
return {
init: function () {},
set_ds: function(rpt_headers, rpt_rows) {}
} // return
}();
答案 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的值现在是包含键init
和set_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。
没有括号。