понедельник, 2 февраля 2015 г.

Безопасный вызов конструктора класса без new

С помощью этого подхода вы можете обезопасить свои конструкторы от вызова без new.

function Color (r, g, b) {
    // Проверяем this на то, является ли оно объектом Color
    if (! (this instanceof Color) ) {
        return new Color(r, g, b);
        // Или возвращаем ошибку
        // throw new Error('Color вызван без new');
    }
    this.r = r;
    this.g = g;
    this.b = b;
}

// Глобальная переменная
r = "Rodent Of Unusual Size";

// Небезопасный вызов
// this -  глобальный объект

var blue = Color(0, 0, 255);

// Выведет: "Rodent Of Unusual Size"
console.log(r);

// Выведет: Color {r: 0, g: 0, b: 255}
console.log(blue);

Комментариев нет:

Отправить комментарий