Как это называется в JS?

116
22 июня 2021, 16:20

с JS знаком очень мало, в основном пытался что нибудь делать на JQ. Как это реализовать

let form= document.forms.namedItem('my_form');
form.my_method({id: "name_id"}) // .my_method({}) как его создать

могли бы вы подсказать про что почитать?

Answer 1

.prototype может добавлять функции (методы), которые в дальнейшем будут работать для любых элементов указанного вида:

HTMLFormElement.prototype.my_method = function(obj){ 
  this.id = obj.id; // this == элемент, который вызвал функцию 
}; 
 
Array.prototype.bubufy = function(){ 
  for( var i = 0; i < this.length; i++ ){ 
    this[i] = 'bubu-' + this[i]; 
  } 
  return this; 
} 
 
/*********/ 
 
let form = document.forms.namedItem('my_form'); 
form.my_method({id: "name_id"}); 
 
console.log( [1, 2, 3].bubufy().join("; ") );
form[id] input { 
  border-color: red; 
} /* Красный цвет рамок - индикатор, что функция сработала */
<form name="my_form"> 
  <input> 
  <input> 
</form>

Но не стоит лезть туда со своими функциями по поводу и без) Большинство задач решаются через обычную функцию в виде my_function( form, obj )

let form = document.forms.namedItem('my_form'); 
my_method( form, {id: "name_id"} ); 
 
function my_method( elem, obj){ 
  elem.id = obj.id; 
};
form[id] input { 
  border-color: red; 
}
<form name="my_form"> 
  <input> 
  <input> 
</form>

Хотя функцию можно добавить и конкретному элементу. Но мне сложно придумать пример из реальной жизни, где это может пригодится)

let form = document.forms.namedItem('my_form'); 
 
form.my_method = function(obj){ 
  this.id = obj.id; 
} 
 
form.my_method({id: "name_id"});
form[id] input { 
  border-color: red; 
}
<form name="my_form"> 
  <input> 
  <input> 
</form>

READ ALSO
Как при выборе темы оформления сохранять выбор через cookie?

Как при выборе темы оформления сохранять выбор через cookie?

У меня есть простой сайт и на нём я хочу предоставить юзерам возможность менять темы оформления, к примеру есть три файла:

86
Убрать повторяющийся тег

Убрать повторяющийся тег

Как можно скриптом убрать тег <br>, если подряд идут два?

111
Падает телеграмм бот на heroku

Падает телеграмм бот на heroku

Телеграмм бот на NodeJS + telegrafJS деплоится на heroku, бот работает корректно, но спустя неопределенное количество времени - падает и требует перезагрузки...

134
Не работает система реактивности Vue.js

Не работает система реактивности Vue.js

В mounted устанавливаю значение abilitiesНа странице должны выводится данные из этого свойства, но ничего не выводится

120