В чем отличие метода и функции?
Логически:
метод — это присуще объекту. вызывается только для объекта. может работать с внутренними полями объекта.
функция — вещь в себе вызывается откуда угодно и для чего угодно.
Реально:
метод — такая же функция, одним из входных значений которой является объект, для которого вызван метод.
Остальные ответы
Метод, методология это КАК вы что-то собираетесь делать.
Функция, функциональность это ЧЕМ вы это собираетесь делать. Какие функциональные особенности у предмета.
Топорное изьяснение).
fd fdУченик (137) 3 года назад
типичный ответ гуманитария) сказать ни о чем но сделать вид будто чтото сказал
fd fdУченик (137) 3 года назад
человек же про программирование спрашивает
функция возвращает результат,
метод — свойство объекта, функция может быть методом объекта
объекты и методы удобны для инкапсуляции, что позволяет не загрязнять пространство имен
doctor Brain
В этом небольшом очерке мы разберемся, в чем основное отличие функций и методов в JavaScript.
Итак, функция существует сама по себе:
const bark = () => < console.log('wof!') >bark()
function bark() < console.log('wof!') >bark()
В свою очередь, метод — это функция, назначенная свойству объекта:
const dog = < bark: () => < console.log('wof!') >> dog.bark()
Метод имеет доступ к свойствам объекта, но только в случае, когда он является обычной функцией, а не стрелочной:
const dog = < name: 'Roger', bark: function() < console.log(`I am $. wof!`) > > dog.bark()
Спасибо за внимание.
Новые публикации

JavaScript: сохраняем страницу в pdf

2021-07-12
HTML: Полезные примеры

2021-07-11
CSS: Ускоряем загрузку страницы

2021-07-10
JavaScript: 5 странностей

2021-07-10
JavaScript: конструктор сортировщиков
Категории
О нас
Frontend & Backend. Статьи, обзоры, заметки, код, уроки.
© 2021 dr.Brain .
мир глазами веб-разработчика
Чем отличается «метод» от «функции»
Неоднократно видел использование термина «метод» для обозначения функций-членов классов в противоположность термину «функция» для обозначения «свободных» функций нечленов. С другой стороны, в текстах о Си++, часто всё называют «функцией» и члены и нечлены. Собственно, какова разница между терминами «метод» и «функция», почему в Си++ члены не называют «методами»?
Отслеживать
задан 30 окт 2017 в 7:28
6,853 2 2 золотых знака 23 23 серебряных знака 43 43 бронзовых знака
почему в Си++ члены не называют «методами»? — так и хочется пошутить про потому что они ч. но не буду
30 окт 2017 в 7:34
Метод — это функция, которая член класса. И это вся разница вроде)
30 окт 2017 в 7:34
@andreymal можно как ответ делать. терминология-faq с эпичным ответом)
30 окт 2017 в 7:40
@АлексейШиманский я не уверен, что так во всех языках, и предпочту воздержаться от ответа. Эпичный ответ с примерами и исключениями (если таковые существуют) от кого-нибудь уверенного будет более полезным)
30 окт 2017 в 7:43
@andreymal А процедура — член класса тогда как называется?
30 окт 2017 в 8:25
6 ответов 6
Сортировка: Сброс на вариант по умолчанию
И чего так много слов то? Все просто:
Метод всегда является функцией, а функция не всегда является методом.
Отслеживать
ответ дан 30 окт 2017 в 9:12
81.3k 7 7 золотых знаков 72 72 серебряных знака 153 153 бронзовых знака
Это как «Большой палец — всегда палец, но палец не всегда большой?» (c) ТБВ
30 окт 2017 в 9:46
Точно, именно так 🙂
30 окт 2017 в 10:14
Нет единой устоявшейся техники наименования сущностей в языках программирования и каждый язык, чтобы немного отличаться от других, по историческим причинам имеет свой набор названий и соглашений.
Так как программирование пришло с математики, то начальные корни нужно искать там. А там были функции и процедуры. Функция на основании своих аргументов генерирует какой-то результат. sin , cos — яркие примеры. Функция без аргументов — вырожденный вариант и обычно это константа. В математике обычно функции являются чистыми — то есть, у них нет побочных эффектов. То есть, вызов функции с одними и теми же аргументами дает один и тот же результат.
Параллельно существуют процедуры. Процедура — это последовательность действий, приводящая к определенному результату (да, обычная программа — это также может быть процедура, хотя. ). В паскале и фортране принято, что процедура не возвращает результат. Но я считаю, что это исключительно соглашение, потому что иначе нужно было бы делать как в C/C++ и вводить пустой тип (void).
почему в Си++ члены не называют «методами»?
Во многих языках 60-70 годов не было ООП в том понимании, которое известно сейчас. С++ изначально был просто «фронтом» (то есть надстройкой) над обычным Си. Был долгий период, когда это уже был не Си, но и ещё и не C++. Компилятора C++ не было, а был транслятор в Си. Видимо, поэтому там закрепилось функция класса/переменная класса. Сейчас Страуструп предлагает N4174, и если его примут, то грань между обычными функциями и функциями класса размоется ещё больше.
В других языках — Java и семейство, проектировались, когда уже ООП был немного сформированным. От обычных функций они решили отказаться и, видимо, чтобы не вызывать путаницу, обозвали все методами. Да, потом им пришлось функции все-таки вернуть назад, но, чтобы ничего не сломать, назвали это статическими методами.
Собственно, какова разница между терминами «метод» и «функция»
Правильный ответ — историческая. Как правильно называть сущности в разных языках, нужно уточнять в их документации.
многие автора книг по с++ называют функции класса методами. Как быть?
Тут все сложно. Например, Эккель так делает видимо потому, что он ещё и много книг о Java написал. Также не стоит забывать, что многие книги мы читаем в переводе, а они «исправляют», потому что переводчику так понятнее.
так можно ли называть функции класса с++ методами?
Это точно так же, как использовать мат/обсценную лексику в высшем обществе. Или пытаться объясниться с гопниками языком Тургенева и стихами Пушкина/Блока.
P.S. метод — слово многозначное и вполне можно услышать от C++ программистов такое «это метод для получения данных с сервера, реализован в виде 5 функций и двух классов».
Vanilla JS
Разница между функцией, методом и вызовом конструктора объектов.
Функция — обычный вызов независимой функции.
function hello(username) return «hello, » + username;
>
hello(«Boris»); // «hello, Boris»
Функция может обращаться к глобальному объекту.
var username = ‘Boris’;
function hello() return «hello, » + this.username;
>
hello(); // «hello, Boris»
Однако в строгом режиме ES5 this = undefined.
function hello() «use strict»;
return «hello, » + this.username;
>
hello(); // error: cannot read property «username» of undefined
Метод — функция привязанная к объекту.
var obj = hello: function() return «hello, » + this.username;
>,
username: «Boris»
>;
obj.hello(); // «hello, Boris»
Метод одного объекта можно привязать к другому объекту.
var obj2 = hello: obj.hello, // метод из первого объекта
username: «Boo»
>;
obj2.hello(); // «hello, Boo»
Также методом объекта может быть обычная функция, поскольку this всегда будет являться этот объект или window.
function hello() return «hello, » + this.username;
>
var obj1 = hello: hello,
username: «Gordon Gekko»
>;
obj1.hello(); // «hello, Gordon Gekko»
var obj2 = hello: hello,
username: «Biff Tannen»
>;
obj2.hello(); // «hello, Biff Tannen»
Функция конструктор объектов всегда вызывается с оператором new и всегда создает объект <>!
function User(name, passwordHash) this.name = name;
this.passwordHash = passwordHash;
>
var obj = new User(«sfalken», «0ef33ae791068ec64b502d6cb0191387»);
В отличии от обычных функций и методов функция конструктор всегда создает новый объект, к которому привязан this — этот объект.
Единственная задача функций конструкторов объектов — это создавать объекты, а не выполнять какие-либо действия.