Size: a a a

2021 June 24

BN

Beibars Nygyzbaev in Frontend_ru
Добрый день, я только начал изучать ООП JS и у меня возник один вопрос. Внутри конструктора мы через this можем обращаться не только к параметрам но и к созданным объектам через их имена, или я чего то не понимаю?
источник

AD

Alehandro Daminges in Frontend_ru
давай пример, а то как-то не очень написан вопрос )
источник

BN

Beibars Nygyzbaev in Frontend_ru
class Elem {
   constructor(selector) {
       this.elem = document.querySelector(selector);
   }
   html(text) {
       this.elem.innerHTML = text;
   }
   attr(name, value) {
       this.elem.setAttribute(name, value);
   }
}
let elem = new Elem('#test');
elem.html('!');
elem.attr('title', 'salem');
источник

BN

Beibars Nygyzbaev in Frontend_ru
К примеру тут я не понял к чему мы обращаемся в конструкторе
источник

BN

Beibars Nygyzbaev in Frontend_ru
this.elem
источник

BN

Beibars Nygyzbaev in Frontend_ru
это свойство или мы обращаемся к созданному элементу elem
источник

BN

Beibars Nygyzbaev in Frontend_ru
созданному объекту*
источник

BN

Beibars Nygyzbaev in Frontend_ru
class Rectange {
   constructor(width, height) {
       this.div = document.createElement('div');
       this.div.style.height = height + 'px';
       this.div.style.width = width + 'px';
       document.body.appendChild(this.div);
   }
   setWidth(width) {
       this.div.style.width = width + 'px';
   }
}
let elem = new Rectange(100, 100);
let elem2 = new Rectange(200, 300);
elem.setWidth(1000);
                                                                                      Или же тут, почему прописали this везде внутри класса, это как влияет вообще?
источник

P

Portulak in Frontend_ru
Это создание свойства класса Elem и присваивание ему ссылки на элемент дом дерева
источник

BN

Beibars Nygyzbaev in Frontend_ru
аа
источник

BN

Beibars Nygyzbaev in Frontend_ru
ну присвоили ок, только почему это свойство превращается в наш объект при его создании
источник

P

Portulak in Frontend_ru
В какой 'наш объект'?
источник

BN

Beibars Nygyzbaev in Frontend_ru
let elem = new Elem('#test')
источник

BN

Beibars Nygyzbaev in Frontend_ru
блин у меня мозг взрывается, даже не могу правильно сформулировать свой вопрос потому что еще многое мне не понятно \
источник

P

Portulak in Frontend_ru
При объявлении переменной в вашем примере вы пробрасываете в конструктор класса строку с идентификатором тега в дом дереве, и согласно конструктору класса по этому тегу находится элемент на странице и ссылка на него пртчваивается свойству elem класса
источник

BN

Beibars Nygyzbaev in Frontend_ru
хорошо я вроде как понял
источник

P

Portulak in Frontend_ru
Соответственно из новой переменной по elem.elem доступен элемент дом дерева, а описанные методы класса Elem могут изменить содержимое этого элемента на странице (Elem.html), или установить определенный атрибут (Elem.attr)
источник

AE

Alex Elkin🇪🇸 in Frontend_ru
пример путает т.к. много одинаковых разных слов. с дивом лучше.
источник

AD

Alehandro Daminges in Frontend_ru
В конструкторе создается объект, this - это ссылка на создаваемый объект.
После выполнения конструктора в прототип создаваемого объекта кладутся методы класса, в данном случае html и attr.
После возвращается созданный и наполненный объект, и в переменной elem ты имеешь этот самый объект.
Внутри методов прототипа объекта тоже прописан this, этот this, при вызове метода, будет ссылаться на объект, в контексте которого вызван метод.
источник

OS

Oleg Shilov in Frontend_ru
всем здрасте. кто нибудь юзал grpc-web из вебворкера?
источник