Свойства объектов

246
08 февраля 2018, 18:54
function func()
{
    this.size = 50;
    this.addheight = Math.sin(Math.PI/4)*(this.size/2);
}
obj1 = new func();
obj3 = new func();
obj3.size = 40;

Друзья, подскажите пожалуйста, почему в данном случае в obj3 свойству size присвоилось значение 40, а addheight осталась 50 по умолчанию в obj3, и как нужно правильно объявлять свойства в случае таких сложных выражений. Заранее спасибо

Answer 1

Можно использовать магию сеттеров:

class func { 
  constructor(){ 
    this._size = 50; 
    this.addheight = Math.sin(Math.PI/4)*(this.size/2);   
  } 
  set size(value) { 
    this.addheight = Math.sin(Math.PI/4)*(value/2); 
    this._size = value; 
    return value; 
  } 
  get size(){ 
    return this._size; 
  } 
} 
 
obj = new func(); 
console.log(obj); 
obj.size = 40; 
console.log(obj);

READ ALSO
Как получить макс высоту с padding?

Как получить макс высоту с padding?

Привет есть такая структура

214
js/jquery focus textarea не работает

js/jquery focus textarea не работает

Как можно вызвать событие focus() для элемента textarea, средствами кода? Чтобы произошло тоже самое, как когда нажимаешь на поле textarea мышкойТо есть...

171
Как исправить importScripts is not defined?

Как исправить importScripts is not defined?

Возникла потребность подключить к сайту сервис рассылки push-уведомленийВ js-файле, предоставляемом сервисом для работы функционала, была...

232