Вопрос по прототипу

98
01 октября 2021, 04:30

Есть небольшой код:

function cw(obj) {
  this.obj = document.getElementsByTagName(obj)[0];
  return document.getElementsByTagName(obj)[0];
}
cw.prototype.val = () => {
  return this.obj.innerText;
}

По-идее, такой код при

<button>ABCDE</button>

и

console.log(cw("button").val);

Должен возвращать "ABCDE", но, увы не работает. Также, я для теста в консоли прописывал

cw("button")
this.obj.innerText

И эти строки возвращали нужные "ABCDE", а вот функция .val возвращает только undefined.

В чём может быть ошибка? Пробовал и через try-catch - также ничего.

Answer 1

function cw(obj) { 
  this.obj = document.getElementsByTagName(obj)[0]; 
} 
 
cw.prototype.val = function() { 
  return this.obj.innerText; 
} 
 
console.log(new cw("button").val());
<button>ABCDE</button>

А как это реализовать без new?

function cw(obj) { 
  return { 
    obj: document.getElementsByTagName(obj)[0], 
    val: function() { 
      return this.obj.innerText; 
    } 
  }; 
} 
 
console.log(cw("button").val());
<button>ABCDE</button>

READ ALSO
Сам написал, и не понимаю как работает

Сам написал, и не понимаю как работает

Не понимаю работу функции

92
matrixTransform на svg: неожиданное поведение

matrixTransform на svg: неожиданное поведение

У меня есть div, содержащий изображение SVG размером 300x300 пикселей и viewBox 1000x1000Изображение состоит из синего прямоугольника поверх красного

114
ghbdtn =&gt; привет. Перевод с английского регистра на русский

ghbdtn => привет. Перевод с английского регистра на русский

Пишу бота для дословного перевода сообщений с английского на русскийХотелось бы узнать об общепринятых решениях этой задачи, а не придумывать...

105