在这个例子中,我试图迭代传递给点击处理程序的对象的属性,但是我得到了意想不到的结果。 Here's小提琴
使用像
这样的JS脚本 $(document).ready(function ()
{
Label = function (name, toDate, fromDate)
{
this.name = name;
this.toDate = toDate;
this.fromDate = fromDate;
}
lbl = new Label('John', 'Today', 'Yesterday');
$('#btnSubmit').click(function ()
{
for (var i in lbl)
{
console.log(i);
}
});
$('#btnSubmit2').click(function (Label)
{
for (var i in Label)
{
console.log(i);
}
});
});
为什么我不能在click事件的函数中传递一个对象并迭代它的属性而不是像我在btnSubmit
示例中那样使用forin循环?
答案 0 :(得分:2)
始终使用event作为参数调用回调。当您编写click(function(Label){
时,您只将该事件变量命名为Label
(从而遮蔽您的外部构造函数)。
但是你可以访问外部作用域中定义的变量,所以你想要的可能是
var lbl = new Label('John', 'Today', 'Yesterday');
$('#btnSubmit').click(function(){
for (var i in lbl) {
console.log(i, lbl[i]); // for example "name", "John"
}
});