Объекты Javascript: доступ к переменным объекта из методов - PullRequest
1 голос
/ 05 января 2010

Быстрый вопрос, и мне еще предстоит решить его самостоятельно. Начну с примера.

object = {
    somevariable: true,
    someothervariable:31,
    somefunction: function(input){
        if (somevariable === true){
            return someothervariable+input;
        }
    }
}

object.somefunction(3);

Очевидно, это не сработает. Должен ли я сказать object.somevariable и object.someothervariable или есть способ ссылки на переменные, являющиеся частью локального объекта, без явной ссылки на объект?

Спасибо

Gausie

Ответы [ 2 ]

5 голосов
/ 05 января 2010

Используйте специальное ключевое слово this, которое относится к объекту, для которого была вызвана функция:

var thing = {
    somevariable: true,
    someothervariable:31,
    somefunction: function(input){
        if (this.somevariable === true){
            return this.someothervariable+input;
        }
    }
}
thing.somefunction(3);

var otherThing = {
    somevariable: true,
    someothervariable:'foo',
    amethod: thing.somefunction
};
otherThing.amethod('bar');

Будьте осторожны при использовании имен переменных, таких как «объект». JS чувствителен к регистру, поэтому он не будет конфликтовать с внутренним Object, но вы можете столкнуться с проблемами на других языках.

1 голос
/ 05 января 2010

При добавлении "это" у меня работает.

var o = {
    somevariable: true,
    someothervariable:31,
    somefunction: function(input){
        if (this.somevariable === true){
            return this.someothervariable+input;
        }
    }
}

alert(o.somefunction(3));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...