如何正确获得此引用,它返回“foo undefined”;
function myObject(){
this.foo="bar"
this.foo2=this.myMethod.foo3;
alert(this.foo2);
}
myObject.prototype.myMethod= {
foo3:'foo'+this.foo;
}
答案 0 :(得分:0)
当你这样做时......
myObject.prototype.myMethod=
{
foo3:'foo'+this.foo;
}
正在从创建对象的当前上下文中评估this
的值,该对象可能没有foo
属性。
不确定为什么要调用它myMethod
,但是要分配一个Object,但如果你真的把它变成了一个方法,那么你就可以获得正确的foo
值。
function myObject(){
this.foo="bar"
this.foo2=this.myMethod();
alert(this.foo2);
}
myObject.prototype.myMethod= function() {
return 'foo'+this.foo;
};
var o = new myObject(); // alerts "foobar", and returns the new object
答案 1 :(得分:0)
'foo' + this.foo
在解析时会立即连接在一起,所以它很无用(this
不会引用实例)。
要获取包含您想要获取变量的对象的对象,必须使用函数。该函数仅在您调用时执行,因此this.foo
指的是正确的值。
function myObject(){
this.foo="bar";
this.foo2=this.myMethod().foo3;
alert(this.foo2);
}
myObject.prototype.myMethod = function() {
return {
foo3: 'foo'+this.foo
};
};