Хотелось бы узнать о различиях между методом ({method(){}}
) и функцией ({function: function(){}}
) - как по смыслу, так и технически. Желательно не выдержку из спеки (в конце можно и её), а более человеческим языком.
Как частный вопрос: почему метод не получается использовать в роли конструктора?
function f(){}
let obj = {
f(){}
};
console.info(new f()); // {}
console.info(new obj.f()); // TypeError: obj.f is not a constructor
Разница между "методом" и "функцией" в JS исплючительно в синтаксисе. Аналогично с "классом" и "прототипом".
Просто к ES6 разрабы языка решили окончательно признать, что прототипы никому даром не нужны ни под каким соусом (расширения стандартных классов сообщество объявило вселенским злом, а выкрутасы с прототипами мимо классического ООПа напрочь убивают хитроумные оптимизации во всех жабоскриптовых движках), поэтому следующее поколение жабоскриптеров может писать "классы", "методы", "конструкторы", а про прототипы вспоминать на лекциях "продвинутый жабоскрипт, или, мама, я еду без рук!"
Вопсче, традиционно считается, что функция — это нечто, что существует отдельно от всего, принимает параметры и возвращает результат; метод — это нечто, что прибито гвоздями к конкретному объекту, на деле принимает объект первым аргументом явно или неявно, а так от функции мало отличается; и всякие Вирты ещё отделают процедуры, которые что-то делают, временами что-то принимают, но ничего не возвращают.
В мире жабоскрипта этого всего не существует: this есть везде, глобальные функции являются методами глобального объекта (в браузерах window), функции всегда что-то возвращают (если ничего не вернуть явно, undefined вернут за вас). В других языках стройное разделение портят статические глобальные методы, методы-расширения и прочее, что помножает всякую классификацию на ноль.
Внутри все эту функции-методы-процедуры выглядят абсолютно одинаково: пушнули позицию, джампнулись, что-то сделали, попнули, вернулись.
метод - это присуще объекту. вызывается только для объекта. может работать с внутренними полями объекта.
функция - вещь в себе вызывается откуда угодно и для чего угодно.
Реально:метод - такая же функция, одним из входных значений которой является объект, для которого вызван метод.
Проще говоря
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть 2 блока, вверху один активный (имеет класс active), другой нетЕсть 2 других блока ниже, со свойством display:none, но один, как можно догадаться,...
Нашел слайдер от яндекса, который у них на главной используется на мобустройствах
Народ, помогите пожалуйстаДелаю калькулятор стоимости ремонта