メンバー関数render()があります。この関数は、クラスadd(any)の別のメンバーを呼び出します。これはスニペットです。
render(){
collection.each(this.add);
}
addでキーワード「this」を使用すると、タイプはwindowです。メンバークラスのインスタンスになると思います。
コンストラクター、メンバー関数、またはメンバーアクセサーでは、これは含まれているクラスのクラスインスタンスタイプです。
メンバー関数render()があります。この関数は、クラスadd(any)の別のメンバーを呼び出します。これはスニペットです。
render(){
collection.each(this.add);
}
addでキーワード「this」を使用すると、タイプはwindowです。メンバークラスのインスタンスになると思います。
コンストラクター、メンバー関数、またはメンバーアクセサーでは、これは含まれているクラスのクラスインスタンスタイプです。
JcFx が指摘しているように、this
スコープはeach
コールバック内で異なります。
ただし、「太い矢印」匿名関数を使用すると、this
探しているものを取得できるように字句スコープ規則が使用されます。
render(){
collection.each((x) => this.add(x));
}
次の JavaScript にコンパイルされます。
X.prototype.render = function () {
var _this = this;
collection.each(function (x) {
return _this.add(x);
});
}
別のオプションは、目的の へbind
のadd
呼び出しを明示的に行うことthis
です。
render(){
collection.each(this.add.bind(this));
}
バグではないと思います。
あなたはもはやrender()
関数のスコープではなく、代わりに のスコープにいeach()
ます。
これを試して:
render(){
var that = this;
collection.each(that.add);
}