現在、私は構造(通常の関数)を宣言することによってjavascriptでオブジェクトを作成し、次にそのようにプロトタイプにメソッドを追加します
function Test(){
}
Test.prototype.test1 = function(){
var me = this;
}
var me = this
ただし、すべての関数の先頭で宣言する必要はありません。以下は機能しているようですが、非常に非効率的であるようです。
$(document).ready(function(){
var n = 0;
(function(){
function createTest(){
var me;
function Test(){
this.n = n;
this.testArr = [1, 2, 3, 4];
n++;
}
Test.prototype.test1 = function(){
me.test2();
};
Test.prototype.test2 = function(){
alert(me.n);
$.getJSON('test.php', {}, function(reply)
//want to be able to use 'me' here
me.newField = reply;
});
};
var t = new Test();
me = t;
return t;
}
window['createTest'] = createTest;
})();
var t = createTest();
t.test1();
var t2 = createTest();
t2.test1();
t.test1();
});
このコードは期待値を出力しますが、実際には見た目と同じくらい非効率的ですか(createTest()を呼び出すたびにTestオブジェクトが再宣言されます)?
とにかく、これは少しハッキーに見えるでしょう...これを行うための完全に異なる方法がありますか?
編集:私がこれをしたい本当の理由は、test2のようなコールバックが正しいへの参照を持つようにするためthis
です。