Czy ktoś może podać proste wyjaśnienie metod vs. funkcji w kontekście OOP?
if(class(object)) { ... } else {stop()}
byłoby koncepcyjnie równoważne metodzie?
Czy ktoś może podać proste wyjaśnienie metod vs. funkcji w kontekście OOP?
if(class(object)) { ... } else {stop()}
byłoby koncepcyjnie równoważne metodzie?
Odpowiedzi:
Funkcja jest kawałek kodu, który nazywa się po imieniu. Można przekazać dane do działania (tj. Parametry) i opcjonalnie zwrócić dane (wartość zwracana). Wszystkie dane przekazywane do funkcji są jawnie przekazywane.
Metoda jest kawałek kodu, który jest nazywany przez nazwę, która jest skojarzona z obiektem. Pod wieloma względami jest identyczny z funkcją, z wyjątkiem dwóch kluczowych różnic:
(jest to uproszczone wyjaśnienie, ignorujące kwestie zakresu itp.)
Metoda jest na obiekcie.
Funkcja jest niezależna od obiektu.
W przypadku Java i C # istnieją tylko metody.
W przypadku C są tylko funkcje.
W przypadku C ++ i Python zależałoby to od tego, czy jesteś w klasie.
„metoda” to zorientowane obiektowo słowo oznaczające „funkcję” . To prawie wszystko, co tam jest (tzn. Nie ma prawdziwej różnicy).
Niestety, myślę, że wiele odpowiedzi tutaj utrwala lub rozwija pomysł, że istnieje jakaś złożona, znacząca różnica.
Naprawdę - nie ma w tym aż tyle, tylko inne słowa na to samo.
[późne dodanie]
W rzeczywistości, jak zauważył Brian Neal w komentarzu do tego pytania , standard C ++ nigdy nie używa terminu „metoda” w odniesieniu do funkcji składowych. Niektóre osoby mogą uznać to za wskazówkę, że C ++ nie jest tak naprawdę językiem obiektowym; wolę jednak traktować to jako wskazówkę, że całkiem sprytna grupa ludzi nie uważała, że istnieje szczególnie silny powód, aby używać innego terminu.
self
argument jest jawny. I wiele języków ma metody statyczne, które nie są przekazywane instancji.
this
lub self
, ale te konstrukcje są zwykle nazywane funkcjami, a nie metodami.
Ogólnie: metody są funkcjami należącymi do klasy, funkcje mogą znajdować się w dowolnym innym zakresie kodu, więc można stwierdzić, że wszystkie metody są funkcjami, ale nie wszystkie funkcje są metodami:
Weź następujący przykład python:
class Door:
def open(self):
print 'hello stranger'
def knock_door:
a_door = Door()
Door.open(a_door)
knock_door()
Podany przykład pokazuje klasę o nazwie „Door”, która ma metodę lub akcję o nazwie „open”, nazywa się to metodą, ponieważ została zadeklarowana w klasie. Jest jeszcze inna część kodu z „def” tuż poniżej, która definiuje funkcję, jest to funkcja, ponieważ nie jest zadeklarowana w klasie, funkcja ta wywołuje metodę, którą zdefiniowaliśmy w naszej klasie, jak widać, a na końcu funkcja jest nazywany sam.
Jak widać, możesz wywołać funkcję w dowolnym miejscu, ale jeśli chcesz wywołać metodę, musisz przekazać nowy obiekt tego samego typu co klasa, którą metoda jest zadeklarowana (Class.method (obiekt)) lub musisz wywołać metoda wewnątrz obiektu (object.Method ()), przynajmniej w pythonie.
Pomyśl o metodach jako o rzeczach, które może wykonać tylko jedna istota, więc jeśli masz klasę Psa, sensowne byłoby posiadanie funkcji kory tylko w tej klasie, a byłaby to metoda, jeśli masz również klasę Osoby, sensowne byłoby napisz funkcję „feed”, ponieważ nie należy ona do żadnej klasy, ponieważ zarówno ludzie, jak i psy mogą być karmieni, a ty możesz nazwać tę funkcję, ponieważ nie należy ona do żadnej konkretnej klasy.
Prosty sposób na zapamiętanie:
Jeśli masz ochotę przeczytać tutaj, to „Moje wprowadzenie do metod OO”
Ideą paradygmatu zorientowanego obiektowo jest „zagrożenie”, na które oprogramowanie składa się… cóż „obiekty”. Obiekty w świecie rzeczywistym mają właściwości, na przykład jeśli masz pracownika, pracownik ma imię, identyfikator pracownika, stanowisko, należy do działu itp.
Obiekt wie również, jak radzić sobie z jego atrybutami i wykonywać na nich pewne operacje. Powiedzmy, że jeśli chcemy wiedzieć, co robi teraz pracownik, zapytamy go.
employe whatAreYouDoing.
To „whatAreYouDoing” to „wiadomość” wysłana do obiektu. Obiekt wie, jak odpowiedzieć na te pytania, mówi się, że ma „metodę” rozwiązania pytania.
Zatem sposób, w jaki obiekty muszą ujawniać swoje zachowanie, nazywa się metodami. Metody są więc przedmiotem artefaktu, który musi coś „zrobić”.
Inne możliwe metody to
employee whatIsYourName
employee whatIsYourDepartmentsName
itp.
Funkcje z drugiej strony to sposoby, w jakie język programowania musi obliczać niektóre dane, na przykład możesz mieć funkcję addValues (8, 8), która zwraca 16
// pseudo-code
function addValues( int x, int y ) return x + y
// call it
result = addValues( 8,8 )
print result // output is 16...
Ponieważ pierwsze popularne języki programowania (takie jak fortran, c, pascal) nie obejmowały paradygmatu OO, wywołują tylko te „funkcje” artefaktów.
na przykład poprzednią funkcją w C byłoby:
int addValues( int x, int y )
{
return x + y;
}
Powiedzenie, że obiekt ma „funkcję” do wykonania pewnych czynności, nie jest „naturalne”, ponieważ funkcje są bardziej związane z matematyką, podczas gdy pracownik ma mało matematyki, ale możesz mieć metody, które działają dokładnie tak samo jak funkcje, na przykład w Javie byłaby to równoważna funkcja addValues.
public static int addValues( int x, int y ) {
return x + y;
}
Wygląda znajomo? Jest tak, ponieważ Java ma swoje korzenie w C ++, a C ++ w C.
Na koniec jest tylko koncepcja, we wdrażaniu mogą wyglądać tak samo, ale w dokumentacji OO są one nazywane metodami.
Oto przykład wcześniejszego obiektu Employee w Javie.
public class Employee {
Department department;
String name;
public String whatsYourName(){
return this.name;
}
public String whatsYourDeparmentsName(){
return this.department.name();
}
public String whatAreYouDoing(){
return "nothing";
}
// Ignore the following, only set here for completness
public Employee( String name ) {
this.name = name;
}
}
// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John
// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();
// Print the info to the console.
System.out.printf("Employee %s is doing: %s", name, doingWhat );
Output:
Employee John is doing nothing.
Różnica polega zatem na „domenie”, w której jest stosowana.
AppleScript ma pomysł na „naturalny język”, jak kiedyś OO. Na przykład Smalltalk. Mam nadzieję, że po przeczytaniu tego zrozumienie metod w obiektach może okazać się łatwiejsze.
UWAGA: Nie należy kompilować kodu, a jedynie jako przykład. Zmodyfikuj post i dodaj przykład w języku Python.
W świecie OO oba są powszechnie używane w znaczeniu tego samego.
Z czystego punktu widzenia matematyki i CS funkcja zawsze zwraca ten sam wynik, gdy zostanie wywołana z tymi samymi argumentami (f (x, y) = (x + y)). Z drugiej strony metoda jest zwykle kojarzona z instancją klasy. Znów jednak większość współczesnych języków OO nie używa już terminu „funkcja”. Wiele metod statycznych może być bardzo podobnych do funkcji, ponieważ zazwyczaj nie mają stanu (nie zawsze prawdziwe).
Powiedzmy, że funkcja jest blokiem kodu (zwykle z własnym zakresem, a czasem z własnym zamknięciem), który może otrzymywać pewne argumenty i może również zwracać wynik.
Metoda jest funkcją należącą do obiektu (w niektórych systemach obiektowych bardziej poprawne jest stwierdzenie, że jest własnością klasy). Bycie „własnością” obiektu / klasy oznacza, że odwołujesz się do metody przez obiekt / klasę; na przykład w Javie, jeśli chcesz wywołać metodę „open ()” należącą do obiektu „door”, musisz napisać „door.open ()”.
Zazwyczaj metody zyskują również dodatkowe atrybuty opisujące ich zachowanie w obiekcie / klasie, na przykład: widoczność (związana z obiektową koncepcją enkapsulacji), która określa, z których obiektów (lub klas) można wywołać metodę.
W wielu językach obiektowych wszystkie „funkcje” należą do jakiegoś obiektu (lub klasy), dlatego w tych językach nie ma funkcji, które nie są metodami.
Metody są funkcjami klas. W normalnym żargonie ludzie wymieniają metodę i funkcje na całym świecie. Zasadniczo możesz myśleć o nich jako o tej samej rzeczy (nie jestem pewien, czy funkcje globalne są nazywane metodami).
Funkcja jest pojęciem matematycznym. Na przykład:
f(x,y) = sin(x) + cos(y)
mówi, że funkcja f () zwróci sinus pierwszego parametru dodanego do cosinusa drugiego parametru. To tylko matematyka. Tak się składa, że sin () i cos () są również funkcjami. Funkcja ma inną właściwość: wszystkie wywołania funkcji o tych samych parametrach powinny zwracać ten sam wynik.
Z drugiej strony metoda jest funkcją związaną z obiektem w języku zorientowanym obiektowo. Ma jeden domyślny parametr: obiekt, na który działa (i jego stan).
Jeśli więc masz obiekt Z metodą g (x), możesz zobaczyć:
Z.g(x) = sin(x) + cos(Z.y)
W tym przypadku przekazywany jest parametr x, taki sam jak w przykładzie funkcji wcześniej. Jednak parametr do cos () jest wartością, która żyje w obiekcie Z. Z, a dane, które w nim żyją (Zy) są niejawnymi parametrami metody g () Z.
Funkcja lub metoda to nazwany fragment kodu, który można wywołać, który wykonuje niektóre operacje i opcjonalnie zwraca wartość.
W języku C używana jest funkcja terminu. Ludzie Java i C # powiedzieliby, że jest to metoda (w tym przypadku funkcja jest zdefiniowana w klasie / obiekcie).
A C ++ programista może wywołać ją w zależności czy piszą proceduralną styl kodu C ++ lub robią obiektowego sposób C ++, tylko też C / C ++ programista prawdopodobnie nazywają to funkcja, ponieważ termin „metoda” jest funkcją lub czasami metoda ( rzadziej stosowane w literaturze C / C ++).
Korzystasz z funkcji, po prostu wywołując jej nazwę, np.
result = mySum(num1, num2);
Wywołalibyśmy metodę, odwołując się najpierw do jej obiektu, na przykład:
result = MyCalc.mySum(num1,num2);
Historycznie mogła istnieć subtelna różnica w tym, że „metoda” jest czymś, co nie zwraca wartości, i „funkcją”, która to robi. Każdy język ma swój własny słownik terminów o szczególnym znaczeniu.
W „C” słowo „funkcja” oznacza procedurę programu .
W Javie termin „funkcja” nie ma żadnego specjalnego znaczenia. Natomiast „metoda” oznacza jedną z procedur tworzących implementację klasy.
W języku C # byłoby to tłumaczone jako:
public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function
Ale tak naprawdę, powtarzam, że tak naprawdę nie ma różnicy w 2 koncepcjach. Jeśli użyjesz terminu „funkcja” w nieformalnych dyskusjach o Javie, ludzie założą, że masz na myśli „metodę” i będą kontynuować. Nie używaj go w odpowiednich dokumentach lub prezentacjach na temat Javy, bo będziesz wyglądać głupio.
method
... albo nazwałbym to procedure
i function
.
Funkcja to zestaw logiki, za pomocą którego można manipulować danymi.
Metoda natomiast służy do manipulowania danymi obiektu, do którego należy. Tak więc technicznie, jeśli masz funkcję, która nie jest całkowicie związana z twoją klasą, ale została zadeklarowana w klasie, nie jest to metoda; To się nazywa zły projekt.
Metody klasy działają na instancji klasy, zwanej obiektem.
class Example
{
public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".
public void UpdateData() // .. and manipulates it (This is a method by the way)
{
data = data + 1;
}
public void PrintData() // This is also a method
{
Console.WriteLine(data);
}
}
class Program
{
public static void Main()
{
Example exampleObject1 = new Example();
Example exampleObject2 = new Example();
exampleObject1.UpdateData();
exampleObject1.UpdateData();
exampleObject2.UpdateData();
exampleObject1.PrintData(); // Prints "2"
exampleObject2.PrintData(); // Prints "1"
}
}
W językach OO, takich jak Object Pascal lub C ++, „metoda” jest funkcją powiązaną z obiektem. Na przykład obiekt „pies” może mieć funkcję „szczekania”, co można uznać za „metodę”. Natomiast funkcja „StrLen” jest samodzielna (zapewnia długość łańcucha podanego jako argument). Jest to zatem tylko „funkcja”. JavaScript jest technicznie zorientowany obiektowo, ale napotyka wiele ograniczeń w porównaniu z pełnoprawnym językiem, takim jak C ++, C # lub Pascal. Niemniej jednak rozróżnienie powinno nadal obowiązywać.
Kilka dodatkowych faktów: C # jest w pełni zorientowany obiektowo, więc nie można tworzyć samodzielnych „funkcji”. W języku C # każda funkcja jest powiązana z obiektem, a zatem jest technicznie „metodą”. Ciekawostką jest to, że niewiele osób w języku C # nazywa je „metodami” - po prostu używają terminu „funkcje”, ponieważ nie ma żadnego rzeczywistego rozróżnienia.
Wreszcie - tak, aby żaden guru Pascala nie wskoczył na mnie tutaj - Pascal rozróżnia także „funkcje” (które zwracają wartość) i „procedury”, które nie. C # nie czyni tego rozróżnienia wyraźnie, chociaż możesz oczywiście wybrać wartość, czy nie.
Ponieważ wspomniałeś o Pythonie, poniższe informacje mogą być użyteczną ilustracją zależności między metodami i obiektami w większości współczesnych języków obiektowych. W skrócie to, co nazywają „metodą”, jest po prostu funkcją, która dostaje dodatkowy argument (jak wskazały inne odpowiedzi), ale Python czyni to bardziej wyraźnym niż większość języków.
# perfectly normal function
def hello(greetee):
print "Hello", greetee
# generalise a bit (still a function though)
def greet(greeting, greetee):
print greeting, greetee
# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
print greeter.greeting, greetee
# very simple class we can pass to greet_with_greeter
class Greeter(object):
def __init__(self, greeting):
self.greeting = greeting
# while we're at it, here's a method that uses self.greeting...
def greet(self, greetee):
print self.greeting, greetee
# save an object of class Greeter for later
hello_greeter = Greeter("Hello")
# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")
Teraz porównaj funkcję greet_with_greeter
i metodę greet
: jedyną różnicą jest nazwa pierwszego parametru (w funkcji nazwałem ją „powitaniem”, w metodzie nazwałem ją „ja”). Mogę więc użyć tej greet
metody dokładnie w taki sam sposób, jak korzystam z greet_with_greeter
funkcji (używając do tego składni „kropka”, ponieważ zdefiniowałem ją w klasie):
Greeter.greet(hello_greeter, "World")
Więc skutecznie przekształciłem metodę w funkcję. Czy mogę zamienić funkcję w metodę? Cóż, ponieważ Python pozwala bawić się w klasy po ich zdefiniowaniu, spróbujmy:
Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")
Tak, funkcja greet_with_greeter
jest teraz znana również jako metoda greet2
. To pokazuje jedyną prawdziwą różnicę między metodą a funkcją: kiedy wywołujesz metodę „na” obiekcie przez wywołanie object.method(args)
, język magicznie go zamienia method(object, args)
.
(Puryści OO mogą argumentować, że metoda jest czymś innym niż funkcja, a jeśli przejdziesz do zaawansowanego Pythona lub Ruby - lub Smalltalk! - zaczniesz rozumieć ich sens. Również niektóre języki dają metodom specjalny dostęp do bitów obiektu. Ale główną różnicą pojęciową jest nadal ukryty dodatkowy parametr).
dla mnie: funkcja metody i funkcja jest taka sama, jeśli zgadzam się, że:
Tak jak każdy fragment kodu, możesz mieć obiekty, które wstawiasz i możesz mieć obiekt, który powstaje w wyniku. Robiąc to, mogą zmienić stan obiektu, ale nie zmieniłoby to dla mnie ich podstawowego funkcjonowania.
Może występować rozróżnienie definicji w wywoływaniu funkcji obiektów lub innych kodów. Ale czy to nie jest coś do słownych różnic i dlatego ludzie je wymieniają? Wymienia przykład obliczeń, z którymi byłbym ostrożny. ponieważ zatrudniam, do moich obliczeń zatrudniam:
new Employer().calculateSum( 8, 8 );
W ten sposób mogę polegać na tym, że pracodawca jest odpowiedzialny za obliczenia. Jeśli chce więcej pieniędzy, uwalniam go i pozwalam, by funkcja śmieciarza polegająca na usuwaniu niewykorzystanych pracowników zrobiła resztę i pozyskała nowego pracownika.
Nawet twierdzenie, że metoda jest funkcją obiektową, a funkcja jest niepowiązana, nie pomoże mi obliczenie. Sam deskryptor funkcji, a najlepiej dokumentacja funkcji, powie mi, czego potrzebuje i co może zwrócić. Reszta, jak manipulowanie stanem jakiegoś obiektu, nie jest dla mnie tak naprawdę przejrzysta. Oczekuję, że zarówno funkcje, jak i metody dostarczą i zmanipulują to, o co się twierdzą, bez konieczności szczegółowego wiedzieć, jak to robią. Nawet funkcja czysto obliczeniowa może zmienić stan konsoli lub dołączyć do pliku dziennika.
Z mojego zrozumienia, metodą jest każda operacja, którą można wykonać na klasie. Jest to ogólny termin używany w programowaniu.
W wielu językach metody są reprezentowane przez funkcje i podprogramy. Główne rozróżnienie, którego używa większość języków, polega na tym, że funkcje mogą zwracać wartość wywołującemu, a podprogram może tego nie robić. Jednak wiele współczesnych języków ma tylko funkcje, ale te opcjonalnie nie mogą zwrócić żadnej wartości.
Załóżmy na przykład, że chcesz opisać kota i chciałbyś, aby mógł ziewać. Utworzyłbyś klasę Cat za pomocą metody Yawn, która najprawdopodobniej byłaby funkcją bez wartości zwracanej.
Do aproksymacji pierwszego rzędu metoda (w stylu OO w języku C ++) jest innym słowem dla funkcji składowej, która jest częścią klasy.
W językach takich jak C / C ++ możesz mieć funkcje, które nie są członkami klasy; nie nazywasz funkcji niepowiązanej z klasą metodą.
Funkcja jest pojęciem należącym głównie do programowania zorientowanego na procedury, w którym funkcja jest bytem, który może przetwarzać dane i zwraca twoją wartość
Metoda jest koncepcją programowania obiektowego, w której metoda należy do klasy, która głównie przetwarza elementy klasowe.
Ludzie IMHO chcieli po prostu wymyślić nowe słowo dla łatwiejszej komunikacji między programistami, gdy chcieli odwoływać się do funkcji wewnątrz obiektów.
Jeśli mówisz o metodach, masz na myśli funkcje wewnątrz klasy. Jeśli mówisz o funkcjach, masz na myśli po prostu funkcje poza klasą.
Prawda jest taka, że oba słowa służą do opisu funkcji. Nawet jeśli użyłeś go niewłaściwie, nic złego się nie stanie. Oba słowa dobrze opisują, co chcesz osiągnąć w kodzie.
Funkcja to kod, który musi odgrywać rolę ( funkcję ) robienia czegoś. Metoda to metoda rozwiązania problemu.
Robi to samo. To jest to samo. Jeśli chcesz być bardzo precyzyjny i postępować zgodnie z konwencją, możesz wywoływać metody jako funkcje wewnątrz obiektów.
Nie jestem ekspertem, ale to wiem:
Funkcja jest terminem języka C, odnosi się do fragmentu kodu, a nazwa funkcji będzie identyfikatorem tej funkcji.
Metoda jest terminem OO, zwykle ma ten wskaźnik w parametrze funkcji. Nie możesz wywołać tego fragmentu kodu, takiego jak C, musisz użyć obiektu, aby go wywołać.
Metody wywoływania są również różne. Wywołaj tutaj znaczenie, aby znaleźć adres tego fragmentu kodu. C / C ++, czas połączenia użyje symbolu funkcji do zlokalizowania.
Objecive-C jest inny. Wywołanie oznacza funkcję C, aby użyć struktury danych do znalezienia adresu. Oznacza to, że wszystko jest znane w czasie wykonywania.
Wiem, że wiele innych już odpowiedziało, ale uważam, że podążanie jest prostą, ale skuteczną odpowiedzią na jedną linię. Chociaż nie wygląda to dużo lepiej niż inne odpowiedzi tutaj, ale jeśli przeczytasz go uważnie, ma wszystko, co musisz wiedzieć o metodzie vs funkcji.
Metoda jest funkcją, która ma zdefiniowany odbiornik, w kategoriach OOP, metoda jest funkcją na instancji obiektu.
Z przeczytania tego dokumentu na Microsoft
Elementy zawierające kod wykonywalny są wspólnie znane jako elementy funkcji klasy. W poprzedniej sekcji opisano metody, które są podstawowym rodzajem elementów funkcji. W tej sekcji opisano inne rodzaje elementów funkcji obsługiwane przez język C #: konstruktory, właściwości, indeksatory, zdarzenia, operatory i finalizatory.
Zatem metody są podzbiorem funkcji. Każda metoda jest funkcją, ale nie każda funkcja jest metodą, na przykład constructor
nie można powiedzieć, że jest to metoda, ale jest to funkcja.
Funkcja - funkcja w niezależnym fragmencie kodu, która zawiera pewną logikę i musi być wywoływana niezależnie i jest zdefiniowana poza klasą.
Metoda - metoda jest niezależnym fragmentem kodu, który jest wywoływany w odniesieniu do jakiegoś obiektu i jest definiowany wewnątrz klasy.
Oto wyjaśnienie metody vs. funkcji z wykorzystaniem przykładów JavaScript:
test(20, 50);
jest funkcją definiującą i używaną do uruchomienia niektórych kroków lub zwrotu czegoś, co można gdzieś zapisać / wykorzystać.
Możesz ponownie użyć kodu: Zdefiniuj kod raz i użyj go wiele razy.
Możesz użyć tego samego kodu wiele razy z różnymi argumentami, aby uzyskać różne wyniki.
var x = myFunction(4, 3); // Function is called, return value will end up in x
function myFunction(a, b) {
return a * b; // Function returns the product of a and b
}
var test = something.test();
tutaj test () może być metodą jakiegoś obiektu lub niestandardowo zdefiniowanego prototypu dla obiektów wbudowanych, oto więcej wyjaśnień:
Metody JavaScript to akcje, które można wykonać na obiektach.
Metoda JavaScript jest właściwością zawierającą definicję funkcji.
Wbudowana właściwość / metoda dla ciągów w javascript:
var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!
Przykład niestandardowy:
function person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'
Możesz na przykład zdefiniować właściwości String, Array itp
String.prototype.distance = function (char) {
var index = this.indexOf(char);
if (index === -1) {
console.log(char + " does not appear in " + this);
} else {
console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
}
};
var something = "ThisIsSomeString"
// now use distance like this, run and check console log
something.distance("m");
Niektóre odnośniki: Metoda obiektu Javascript , Funkcje , Więcej informacji o prototypie
TL; DR
Funkcja to fragment kodu do uruchomienia.
Metoda jest funkcją wewnątrz obiektu.
Przykład funkcji:
function sum(){
console.log("sum")l
}
Przykład metody:
const obj = {
a:1,
b:2,
sum(){
}
}
Dlatego mówimy, że słowo kluczowe „this” wewnątrz funkcji nie jest zbyt przydatne, chyba że użyjemy go z wywołaniem, zastosowaniem lub powiązaniem. Ponieważ wywołanie, zastosowanie, powiązanie wywoła tę funkcję jako metodę wewnątrz obiektu ==> w zasadzie to konwertuje funkcję na metodę
Często są one wymienne, ale metoda zwykle odnosi się do podprogramu wewnątrz klasy, a funkcja zwykle odnosi się do podprogramu poza klasą. na przykład w Ruby:
# function
def putSqr(a)
puts a ** 2
end
class Math2
# method
def putSqr(a)
puts a ** 2
end
end
W Javie, gdzie wszystko (oprócz instrukcji pakiet i import) musi znajdować się w klasie, ludzie prawie zawsze nazywają je „metodami”.