コンテキストをローカル変数に再割り当てせずに、外部関数のコンテキストを参照することは可能ですか?
例えば:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
var outerObject = this;
$.each(objects, function () {
this.someMethod(outerObject);
});
};
コンテキストをローカル変数に再割り当てせずに、外部関数のコンテキストを参照することは可能ですか?
例えば:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
var outerObject = this;
$.each(objects, function () {
this.someMethod(outerObject);
});
};
.bindを使用できます。それ以外の場合はthis
、ローカル変数で保存する必要があります。
Foo.prototype.bar = function() {
var outerObject = this;
var inner = (function () {
// do something with outerObject
console.log(this === outerObject);
}).bind(this);
};
アップデート:
あなたの場合:
var objects = [];
// populate objects
Foo.prototype.bar = function() {
$.each(objects, (function (obj) {
this.someMethod(obj);
}).bind(this));
};