Сохранение этого внутри экземпляра Object класса - PullRequest
1 голос
/ 27 мая 2011

мой вопрос, вероятно, идентичен и имеет такой же мотив, как этот здесь Я не использую jQuery.Я хотел бы получить решение JavaScript.

мой объект выглядит следующим образом:

function Person(name, age, weight) {
    this._name = name;
    this._weight = weight;
    this._age = age;
    this.Anatomy = {
        Weight: this._weight,
        Height: function () {
            //calculate height from age and weight
            return this._age * this._weight;

//yeah this is stupid calculation but just a demonstration
//not to be intended and here this return the Anatomy object
//but i was expecting Person Object. Could someone correct the 
//code. btw i don't like creating instance and referencing it 
//globally like in the linked post
                    }
                }
            }

1 Ответ

3 голосов
/ 27 мая 2011
this.Anatomy = {
          //'this' here will point to Person
    this.f = function() {
         // 'this' here will point to Anatomy.
    } 
}

Внутренние функции this обычно указывают на следующую вещь на уровень. Наиболее последовательным способом решения этой проблемы будет

this.Anatomy = {
    _person: this,
    Weight: this._weight,
    Height: function () {
        //calculate height from age and weight
        return _person._age * _person._weight;
    }
}

Или вы можете сделать это

function Person(name, age, weight) {
    this.Anatomy = {
        weight: weight,
        height: function() { return age*weight; }
    };
}
...