また、ES6で新たに定義された矢印機能を使用することもできます。
「矢印関数式は、関数 表現よりも短い構文を持っていると引数、スーパー、または new.target、この独自の結合しない。矢印機能は常に匿名である。これらの機能 式は最高です非メソッド関数には適しており、 はコンストラクタとして使用できません。すべてのブラウザがこの機能を実装していない
function Block(id) {
this.element = $('<td>');
$(this.element).click(() => {
console.log(this); // now this will be what it was outside of the anonymous function passed into .click
});
}
注意。私はそれがクロームではなくIE(もちろん)で動作すると信じています。だから、この機能を使いたいのであれば、JavaScriptコードを特定のブラウザのバージョンと互換性があるように変換する、javascriptトランスペアラ(私はBabelをお勧めします)を使用することをお勧めします。したがって、上記の機能にバベルを使用した後にJavascriptをあなたはもちろん、常にちょうど上記のようなあなたの関数を記述し、バベルを使用する必要はありませんでした。この
function Block(id) {
var objectReference = this;
this.element = $('<td>');
$(this.element).click(function() {
console.log(objectReference);
});
}
ようになります。ブラウザの互換性を確保したい場合や、ES6の機能をさらに使用する予定がある場合は、Babelはそれだけの価値があります。
矢印機能を使用しますか? '()=> {}' – Baruch