Скажем, у меня есть такой код:

var object1 = {};
object1.class1 = function() {
    this.property1 = null;
    this.property2 = 'ab';
}

В этом случае, что означает «это»? объект1 или класс1? И когда я хочу определить конструктор класса внутри объекта, как лучше всего это сделать?

3
Khoi 19 Авг 2010 в 12:36

2 ответа

Лучший ответ

Для class1, потому что вы не можете создать объект типа object1.

Однако, если код будет:

function object1() {
    this.class1 = function() {
        this.property1 = null;
        this.property2 = 'ab';
    }
}

У вас могло быть:

var obj = new object1();
obj.class1();
obj.property2; // => 'ab';

var cls = new obj.class1();
cls.property2; // => 'ab';

Так что это может зависеть от контекста.

2
Mewp 19 Авг 2010 в 08:45

Если так называть:

object1.class1();

Тогда this будет ссылаться на object1.

1
Motti 19 Авг 2010 в 08:47