目前,我通过声明构造(常规函数)在 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 对象)?
Anyhoo,这似乎有点hacky......有没有更好的完全不同的方法来做到这一点?
编辑:我想这样做的真正原因是,像 test2 中的回调这样的回调将引用正确的this
.