var obj = new Foo("start");
Foo = function(some){
this.first = function(){
alert("First");
$(".clazz").click($.proxy(this.second,this));
};
this.second = function(){
$(".clazz").append("<span>Second</span>");
//this.out() // Problemb with called a method "this.out()"
};
this.out = function(){
$(".clazz").append("<a>Out</a>");
// Code
};
this.constructor = function(some){
this.first();
};
this.constructor(some);
};
如何从方法“this.second”调用方法“this.out”?
答案 0 :(得分:2)
一种常见的模式是显式声明包含对象引用的局部变量。这通常称为self
或_this
。好处是,无论其他代码做什么,您的函数将始终绑定到您的对象。在下面的示例中,我们看到this.prop
并不总是正确绑定。但是,通过仅使用self
来引用该对象,我们可以避免所有与此相关的问题。
JavaScript库通常以我们不希望的方式绑定我们的函数的方式使用apply
或call
。
function Foo(arg1){
var self = this;
self.prop = arg1;
self.first = function(){
};
self.second = function(){
alert("this.prop = " + this.out() + "\n" + // 2 (baz.prop)
"self.prop = " + self.out() + "\n"); // 1 (bar.prop)
};
self.out = function(){
return this.prop; // Depends on the context, we should use self.prop
};
}
var bar = new Foo(1);
var baz = new Foo(2);
bar.second.apply(baz);