Свойство объекта доступа Javascript в методе - PullRequest
0 голосов
/ 17 февраля 2012

как мне получить эту ссылку правильно, она возвращает "foo undefined";

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

    this.foo2=this.myMethod.foo3;

    alert(this.foo2);
}

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

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

'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
    };
};
0 голосов
/ 17 февраля 2012

Когда вы делаете это ...

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

значение this оценивается из текущего контекста, в котором создается объект, который, вероятно, не имеет свойства foo.


Не знаю, почему вы называете это myMethod, но присваиваете объект, но если вы действительно сделали его методом, вы могли бы получить правильное значение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...