Javascript: Function - возвращение объекта будет недействительным this.variable - PullRequest
0 голосов
/ 14 марта 2012

Я использую JavaScript.Объявление переменной экземпляра this.variable будет работать до тех пор, пока моя функция не вернет объект.Возврат строки, номер не влияет на это.В случае возврата объекта переменная экземпляра больше не работает и становится «неопределенной».Не могли бы вы мне помочь пожалуйста!(Ищите образец в http://jsfiddle.net/woko/vE4rq/2/, протестированном в последних версиях Firefox и Chrome)

function Funct() {
    this.varfunc = "this ist a instance";
    return false;
}

var f = new Funct();
console.log(f.varfunc);

function FunctReturnobj() {
    this.varfunc = "this ist a instance + return an object";
    return {};
}

var fr = new FunctReturnobj();
console.log(fr.varfunc)

Ответы [ 3 ]

0 голосов
/ 14 марта 2012

Оператор new создаст новый объект и применит к нему функцию - this в области действия функции относится к этому объекту.

Но когда функция вызывается без нового или содержит оператор return, она не будет выполняться как «конструктор». this будет указывать на контекст выполнения, обычно это window объект.

0 голосов
/ 14 марта 2012

Вы используете конструкторы неправильно. Конструкторы не должны ничего возвращать сами. Вы можете использовать свойство prototype для объявления методов "класса" / объекта или установить их в конструкторе, как вы уже это делаете:

function Constructor(value) {
  this.variable = value;
}

var obj = new Constructor('test');
obj.variable; // -> Returns 'test';

Так же, как вы можете объявить методы вашего объекта:

function Constructor(value) {
  this.variable = value;

  this.say = function(something) {
    return "I say: " + something;
  };
}

Или способ-прототип:

function Constructor(value) {
  this.variable = value;
}

Constructor.prototype.say = function(something) {
  return "I say: " + something;
};

Конечно, это общий и довольно плохой пример, но вы, вероятно, понимаете:)

0 голосов
/ 14 марта 2012

this в объеме функции равно DOMWindow.

this в области видимости объекта - это объект.

...