Javascript访问方法中的对象属性

时间:2012-02-17 19:53:49

标签: javascript oop

如何正确获得此引用,它返回“foo undefined”;

function myObject(){
    this.foo="bar"

    this.foo2=this.myMethod.foo3;

    alert(this.foo2);
}

myObject.prototype.myMethod= {
    foo3:'foo'+this.foo;
}

2 个答案:

答案 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
    };
};