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);
                }
            });
        });

例で行ったように forin ループを使用する代わりに、クリック イベントの関数でオブジェクトを渡してそのプロパティを反復処理できないのはなぜbtnSubmitですか?

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 に答える