我有以下几点:如何在一个成员函数中引用一个对象?
var o = {f: function(fn) {
fn.call(o);
}};
var ob = {f: function() {
o.f(function() {
this.x = 2; //HERE: how can this reference ob?
//ob.x = 2;
});
}};
ob.f();
ob.x; // undefined
o.f(fn)
电话fn
其中this
势必邻。
在这里,我想用this
访问ob。 但是,调用ob.f
时,this
绑定为o
。 我想,JQuery的工作原理是这样的。 例如:
$(...).blah(function() {
this // this is bound to $(...) jquery object.
...
};
我现在正在做的是:
var Ob = function() {
var self = this;
self.f = function() {
o.f(function() { self.x = 2; };
};
};
var ob = new Ob();
ob.f();
ob.x; // 2
但我不喜欢上面的格式上的原因:
- 使用
new
操作听起来太古典OOP。 - 使用
function
定义class Ob
不直观(至少在开始时)。
这就是为什么我试图用对象字面量来定义ob
。 但我找不到方法来引用对象ob
在功能 使用方法调用设置this
其他对象比ob
。
我可以做类似如下:
var ob = {f: function() {
o.f(function() {
self.x = 2;
});
}};
var self = ob;
ob.f();
ob.x;
但我不知道怎么以上因素。 我想:
function obj(o) {
return function() {
var self = o;
return o;
}();
}
var ob = obj({f: function() {
o.f(function() {
self.x = 2;
});
}});
ob.f();
ob.x;// ReferenceError: self is not defined
那么,有没有参考对象在一个函数的对象 内可靠的方式(根据上下文this
可以绑定到任何东西)?
太棒了!就是我想要的! – numeric 2009-02-20 14:26:14
'self'已经是一个全局变量,比如'undefined'和'NaN'。请用另一个名字来减少混淆。 – some 2009-02-20 14:59:55