Можно ли сделать сеттер и геттер не для свойства объекта а для самого объекта? Известно как задать геттер и сеттер для свойства объекта, например такfunction Osobaya_peremennaya() {} // Класс Osobaya_peremennaya.prototype = { // Задаём сеттер и геттер set znachenie_peremennoy (znachenie) { console.log('Любые другие действия'); this._znachenie_peremennoy = znachenie; }, get znachenie_peremennoy () { return this._znachenie_peremennoy; } }; // Использование prozrachnost = new Osobaya_peremennaya; prozrachnost.znachenie = 0.5; console.log(prozrachnost.znachenie); Но хотелось бы избежать обращения к свойству и сразу использовать присвоение, то есть вот такprozrachnost = new Osobaya_peremennaya; prozrachnost = 0.5; console.log(prozrachnost); Зачем это нужно. Например в WebGL что бы передать переменной которую мы указали в шейдере какие то данные нужно написать примерно такую строчку.webgl_context.uniform1f(webgl_context.getUniformLocation(shader_programm, "prozrachnost"), 0.5); // Строчка выше смотрится приятнее если она в сеттере prozrachnost.znachenie = 0.5; // Можно ли сократить до такой? prozrachnost = 0.5; Возможно есть совершенно другое решение?
Да, можно использовать глобальные свойства объекта window для создания геттеров и сеттеров для самого объекта. Например, вот как можно создать геттер и сеттер для объекта window:
Да, можно использовать глобальные свойства объекта window для создания геттеров и сеттеров для самого объекта. Например, вот как можно создать геттер и сеттер для объекта window:
Object.defineProperty(window, 'prozrachnost', {configurable: true,
get: function() {
return this._prozrachnost;
},
set: function(value) {
console.log('Любые другие действия');
this._prozrachnost = value;
}
});
После этого можно использовать этот геттер и сеттер так:
prozrachnost = 0.5;console.log(prozrachnost);
Это позволит вам установить и получить значение переменной прямо через объект window, без необходимости обращаться к свойству.