#javascript #функции #dom #prototype
Есть такой код: if (!Element.prototype.remove) { Element.prototype.remove = function remove() { // <---- if (this.parentNode) { this.parentNode.removeChild(this); } }; } Это обычный полифилл для .remove() Меня интересует вопрос - есть ли какой-либо смысл называть как-то функцию вот тут: Element.prototype.remove = function remove() { ... } или в этом смысла нет, и можно её оставить анонимной? Element.prototype.remove = function() { ... }
Ответы
Ответ 1
Имеет. При отладке эта функция будет выводиться в консоль в том виде, в каком она была в коде, поэтому в случае функции с именем будет сразу ясно, что это за функция. А ещё в ES6 вводится свойство name, которое в случае анонимной функции оказывается пустым. function Smth() {} Smth.prototype.doSmth = function doSmth() {} Smth.prototype.doOther = function () {} var x = new Smth(); console.log(x.doSmth); console.log(x.doOther); console.log(x.doSmth.name); console.log(x.doOther.name);Ответ 2
Никакого смысла не несёт. Только дублирвоание имени, на мой взгляд. Но, возможно, кому то нравится такой подход с явным именованием.Ответ 3
Если в теле функции нет необходимости в доступе к самой себе, то смело можно использовать анонимный вариант наименования. Подробнее тут: Именованные функциональные выражения
Комментариев нет:
Отправить комментарий