将参数传递给模块模式函数时未定义
Geting undefined when passing in a parameter to a Module pattern function
$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
这是我第一次尝试使用模块模式。基本上,当 foo 被点击时,我想调用 amountItems 函数中的 speek 方法,我想将字符串 'heey' 传递给该方法,因此当 foo 被点击时它应该警告 'heey' 。最初我想传递类似 $("#foo").text() 的东西,但无论哪种方式我都得到 'undefined'。
你能告诉我如何使用传递给此类函数的 jQuery 对象吗?
您只是将 el
的参数放错了地方。这有效:
$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function() {
return {
speek: function(el) {
alert(el);
}
}
}())
--编辑--
以防万一你想知道整个作用域/私有变量是如何工作的:
$("#foo").on("click", function() {
amountItems.load('heey');
amountItems.speek();
})
var amountItems = (function() {
var el = ""
return {
load: function(str) {
el = str;
},
speek: function() {
alert(el);
}
}
}())
当你这样做时:
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
你执行了一个包装函数并用内部对象赋值 amountItems
。
当您调用它时,您 不 传递参数 (el
),因此 el
未定义。
amountItems
是一个具有名为 speek
的方法的对象, 不 除了参数。
正确的方法是:
var amountItems = {
speek: function(txt) {
alert(txt);
}
};
$("#foo").on("click", function() {
amountItems.speek('heey')
})
$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
这是我第一次尝试使用模块模式。基本上,当 foo 被点击时,我想调用 amountItems 函数中的 speek 方法,我想将字符串 'heey' 传递给该方法,因此当 foo 被点击时它应该警告 'heey' 。最初我想传递类似 $("#foo").text() 的东西,但无论哪种方式我都得到 'undefined'。
你能告诉我如何使用传递给此类函数的 jQuery 对象吗?
您只是将 el
的参数放错了地方。这有效:
$("#foo").on("click", function() {
amountItems.speek('heey')
})
var amountItems = (function() {
return {
speek: function(el) {
alert(el);
}
}
}())
--编辑--
以防万一你想知道整个作用域/私有变量是如何工作的:
$("#foo").on("click", function() {
amountItems.load('heey');
amountItems.speek();
})
var amountItems = (function() {
var el = ""
return {
load: function(str) {
el = str;
},
speek: function() {
alert(el);
}
}
}())
当你这样做时:
var amountItems = (function(el) {
// var el = el;
return {
speek: function() {
alert(el)
}
}
}())
你执行了一个包装函数并用内部对象赋值 amountItems
。
当您调用它时,您 不 传递参数 (el
),因此 el
未定义。
amountItems
是一个具有名为 speek
的方法的对象, 不 除了参数。
正确的方法是:
var amountItems = {
speek: function(txt) {
alert(txt);
}
};
$("#foo").on("click", function() {
amountItems.speek('heey')
})