我的类型看起来像这样:
var x = function(){
this.y = function(){
}
this.z = function(){
...
this.A = function(){
CALLING POINT
}
}
}
从呼叫点开始,我试图调用函数this.y.我不需要传递任何参数,但是当我从这里设置一些东西时,我需要调用this.y.
这可能吗?我可以将额外的参数传递给函数以使其成为可能。
答案 0 :(得分:8)
这可能吗?
是的,您可以将this
引用分配给另一个变量,然后在其上调用函数y
this.z = function() {
var self = this;
this.A = function() {
self.y();
}
}
答案 1 :(得分:3)
带有bind
的版本,基本上会为对象添加新方法a
。
var X = function () {
this.y = function () {
document.write('y<br>');
}
this.z = function () {
document.write('z<br>');
this.a = function () {
document.write('a<br>');
this.y();
}
}.bind(this);
};
var x = new X;
//x.a(); // does not exist
x.z(); // z
x.a(); // a y
保存内部this
的工作示例。
var X = function () {
var that = this; // <--
this.y = function () {
document.write('y<br>');
}
this.Z = function () {
document.write('Z<br>');
this.a = function () {
document.write('a<br>');
that.y();
}
}
}
var x = new X,
z = new x.Z; // Z
z.a(); // a y
答案 2 :(得分:-1)
您不能,因为this.y()
不在this.A()
所在的范围内。如果您将this.y()
设置为全局函数y
,则可以:
var y = function() {};
var x = function() {
this.y = y;
this.z = function() {
...
this.A = function() {
this.y(); // will be successful in executing because this.y is set to the y function.
};
}
};