编辑
:由于您避免存储“本地实例”,因此有一些方法,例如:
使用
call
或
apply
改变
this
被调用函数的值:
var a = function (id) {
this.id = id;
};
a.prototype.get = function () {
return (function() {
return this.id; // the inner `this` value will refer to the value of outside
}).call(this);
};
使用参数:
//..
a.prototype.get = function () {
return (function(instance) {
return instance.id;
})(this);
};
新的EcmaScript第5版介绍了
bind
方法,这对于保持
这
值和可选的绑定参数,可以找到兼容的实现
here
:
//..
a.prototype.get = function() {
var boundFunction = (function () {
return this.id;
}).bind(this);
return boundFunction(); // no matter how the function is invoked its `this`
}; // value will always refer to the instance.