Возвращает значение этого из функции конструктора Javascript, когда возвращается другой конструктор - PullRequest
0 голосов
/ 11 марта 2012

Почему это указывает на родительский класс, а не на объект окна? Не это внутри функции Klass.

function Class() {
    function Klass() {
        this.color="blue"
    }
    Klass.prototype.value = this; // when called this is pointing to Class
    console.log(this) // "Class"
    return Klass;
}

var One = new Class(); // new constructor is returned
var Two = new One(); // creating new object
Two.value 
    - Class  // why ?

Ответы [ 2 ]

1 голос
/ 11 марта 2012
Two.value instanceof Class // true

Two.value содержит экземпляр класса, а не ссылку на класс.

0 голосов
/ 11 марта 2012
function Class() {
    function Klass() {
        this.color="blue"
    }
    Klass.prototype.value = this; // this is in a closure
    console.log(this) // "Class"
    return Klass;
}

var One = new Class(); // new constructor is returned
var Two = new One(); // creating new object
Two.value 
    - Class  // this is always refer to "One"
...