指出我在javascript中的历史经验非常有限,这一点非常重要。我正在寻找我在下面提供的代码示例中使用的概念背后的可能推理。 该应用程序使用MVC,JavaScript,jQuery,knockout.js和Kendo UI的组合。
第一段代码如下所示:
lx.vm = (function ($, ko, kendo, undefined) {
"use strict";
var HCA = function () {
var Compliance = {
complianceId: ko.observable("DEN-AB")
};
debugComplianceId = function () {
return alert("debugComplianceId method has been called!");
};
ko.applyBindings(Compliance);
},
hc = new HCA();
return
{
hc: hc
};
}(jQuery, ko, kendo));
此代码包含在.js
文件的脚本部分中引用的.cshtml
文件中。我迷失的是第一行,lx.vm =
。通过这样做可以实现什么?我理解IIFE的概念,所以函数中包含的代码至少是可以理解的,但我不确定开始这个文件的前缀。是否只是将函数添加到全局范围,同时保持函数的所有成员都是私有的?或者还有其他事情发生在这里吗?
我的下一个问题与这段代码有关:
hc = new HCA();
return
{
hc: hc
};
同样,没有var
明确声明变量,我不理解别名HCA并返回别名的原因。为什么要对它进行别名而不仅仅是返回HCA?
我能找到的最贴切相关的答案就是:How do I namespace JavaScript code with or without IIFEs?
但是,csharpfolk的回答中并没有包含任何解释。
澄清:呈现的JavaScript成功执行。我正在寻找的是通过解释支持第一行代码以及代码中的第二个示例。