【发布时间】:2014-03-13 22:38:38
【问题描述】:
我承认我在 JavaScript 方面还很幼稚,而且每次我认为我得到它的时候,一些奇怪的曲线球都会让我立刻发疯,这并没有帮助。
我有一个类似这样的 js 文件:
(function (myiife, $) {
var myArrayOfThings = [];
myiife.myFunction = function (id) {
var cachedThing = myiife.getFromArray(id);
if (cachedThing === null) {
// get from server
} else {
// do something with cached item
}
};
myiife.getFromArray = function (idToFind) {
for (var i = 0, len = myArrayOfThings; i < len; i++) {
if (myArrayOfThings[i].Id=== idToFind) {
return myArrayOfThings[i]; // Return as soon as the object is found
}
}
return null;
};
}(window.myiife= window.myiife|| {}, jQuery));
真正让我困惑的是期望能够调用事物的正确方法。我想我真的不明白事情的范围,我很难说实话。
如果我想从页面调用 myFunction,它是否应该看起来像这样?
onclick="myiife.myFunction(1)"
我已经阅读了有关范围的内容,但显然我仍然缺少对这一切的理解非常基本的东西。
从我看到的示例中,我没有看到其他似乎必须在函数名称前加上 iife 名称才能从页面执行操作的示例。
任何好的推荐读物也将不胜感激。
【问题讨论】:
-
不太清楚你在问什么。您已将
myiife附加到window并且myiife具有一个名为myFunction的函数的属性。所以是的,在您的点击处理程序中,您需要告诉它调用myFunction,这是myiife的一个属性。但是,最好不要一开始就内联事件处理程序。
标签: javascript scope iife