С учетом вышесказанного, эта функция устарела, советы не использовать в производственном кодировании.

но я читал о том, что существует возможность определения геттеров / сеттеров в JavaScript. Это кажется чрезвычайно полезным - установщик является своего рода «помощником», который может анализировать значение, которое должно быть установлено в первую очередь, перед его фактической установкой.

Например, у меня в настоящее время есть этот код:

var obj = function(value) {
    var test = !!value; // 'test' has to be a boolean
    return {
        get test() { return test },
        set test(value) { test = !!value }
    };
};

var instance = new obj(true);

Этот код всегда конвертируетvalue к логическому. Так что если вы кодinstance.test = 0, тогдаinstance.test === false.

Однако, чтобы это работало, вы должны вернутьобъект, что означает, что новый экземпляр не имеет типаobj но это простой объект. Это означает, что изменение прототипаobj не влияет на экземпляры. Например, это делаетне работай -instance.func не определено:

obj.prototype.func = function() { console.log(this.value); };

потому чтоinstance не типobj, Думаю, чтобы заставить работать функции прототипа, я не должен возвращать простой объект, а скорее ничего не возвращать, чтобыinstance будет просто типаobjВроде работает обычный конструктор.

Проблема в том, как реализовать геттеры / сеттеры? Я могу только найти статьи, описывающие, как добавить их к объекту, а не как часть конструктора пользовательского типа.

Итак, как мне реализовать геттеры / сеттеры в конструкторе, чтобы можно было использовать как геттеры / сеттеры, так и расширение прототипа?

Ответы на вопрос(6)

Ваш ответ на вопрос