0

在此示例中,我试图迭代传递给单击处理程序的对象的属性,但我得到了意想不到的结果。 是小提琴

所以使用像这样的 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);
                }
            });
        });

为什么我不能在单击事件的函数中传递对象并迭代其属性,而不是像在btnSubmit示例中那样使用 forin 循环?

4

1 回答 1

2

回调总是以事件作为参数调用。当您编写时,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"
    }
});
于 2013-09-30T15:46:08.983 回答