1

関数のコンテキストを JavaScript オブジェクトに適用するにはどうすればよいですか? そのため、関数内で「これ」が意味するものを変更できます。

例えば:

var foo = {
    a: function() {
           alert(this.a);
      },
    b: function() {
           this.b +=1;
           alert (this.b);
      }

var moo = new Something(); // some object 
var moo.func.foo = foo; // right now this is moo.func
// how do I apply/change the context of the foo functions to moo?
// so this should equal moo
moo.a(); // this should work
4

1 に答える 1

2

関数をmoo次のように設定できます。

var moo = new Something();
moo.a = foo.a;
moo.a();

...しかし、 のすべてのインスタンスに継承させたい場合はSomething、 on に設定する必要がありますSomething.prototype:

var moo;
Something.prototype = foo;
moo = new Something();
moo.a();

foo.aとの定義にいくつかの問題があります。foo.bどちらも自己参照であるため、特に問題が発生するため、関数をとthis.b +=1のようなものに変更するか、別の名前の関数を使用することをお勧めします。this._b +=alert(this._b)

于 2012-09-16T01:03:24.703 に答える