5
「this」キーワードは関数内でどのように機能しますか?
JavaScriptで興味深い状況に遭遇しました。オブジェクトリテラル表記を使用して複数のオブジェクトを定義するメソッドを持つクラスがあります。これらのオブジェクト内では、thisポインターが使用されています。プログラムの動作から、thisポインタはメソッドが呼び出されたクラスを参照しており、リテラルによって作成されているオブジェクトを参照していないと推定しました。 これは私には期待できる方法ですが、これは恣意的です。これは定義された動作ですか?ブラウザ間で安全ですか?それが「仕様がそう言っている」ことを超えている理由である根本的な理由はありますか(たとえば、それはいくつかのより広範な設計決定/哲学の結果ですか)?削減されたコード例: // inside class definition, itself an object literal, we have this function: onRender: function() { this.menuItems = this.menuItems.concat([ { text: 'Group by Module', rptletdiv: this }, { text: 'Group by Status', rptletdiv: this }]); // etc }