JavaScript オブジェクト リテラルにおける「this」キーワードの動作
オブジェクト リテラル内では、「this」キーワードはオブジェクトのプレースホルダーとして機能します自体。ただし、その動作は呼び出される条件によって異なる場合があります。
コード内:
var MyDate = function(date) { this.date = date; }; var obj1 = { foo: new Date(), bar: new MyDate(this.foo) // this.foo is undefined }; var obj2 = {}; obj2.foo = new Date(); obj2.bar = new MyDate(this.foo); // this.foo is undefined var obj3 = { foo: new Date(), bar: new MyDate(obj3.foo) }; var obj4 = {}; obj4.foo = new Date(); obj4.bar = new MyDate(obj4.foo);
「この」バインディングについて
JavaScript の "this" キーワードは遅延バインディングを示します。これは、関数が呼び出されるまでその値が決定されないことを意味します。あなたの場合:
シナリオ 1 と 2:
シナリオ 3 および 4:
結論
オブジェクト内の「this」キーワードの動作リテラルは、関数が呼び出されるコンテキストによって異なります。オブジェクトに明示的にバインドされていない場合は、デフォルトでグローバル オブジェクトが使用されます。ただし、オブジェクトのメソッドとして呼び出された場合は、その特定のオブジェクトを参照し、オブジェクトのプロパティとメソッドへの適切なアクセスが保証されます。
以上が「this」キーワードは JavaScript オブジェクト リテラルでどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。