Dapatkah seseorang memberikan penjelasan sederhana tentang metode vs. fungsi dalam konteks OOP?
if(class(object)) { ... } else {stop()}
akan secara konsep setara dengan metode?
Dapatkah seseorang memberikan penjelasan sederhana tentang metode vs. fungsi dalam konteks OOP?
if(class(object)) { ... } else {stop()}
akan secara konsep setara dengan metode?
Jawaban:
Suatu fungsi adalah bagian dari kode yang disebut dengan nama. Itu dapat melewati data untuk beroperasi pada (yaitu parameter) dan secara opsional dapat mengembalikan data (nilai kembali). Semua data yang diteruskan ke suatu fungsi diteruskan secara eksplisit.
Sebuah metode adalah bagian dari kode yang disebut dengan nama yang dikaitkan dengan objek. Dalam banyak hal itu identik dengan fungsi kecuali untuk dua perbedaan utama:
(ini adalah penjelasan yang disederhanakan, mengabaikan masalah ruang lingkup dll.)
Suatu metode ada pada suatu objek.
Fungsi tidak tergantung pada suatu objek.
Untuk Java dan C #, hanya ada metode.
Untuk C, hanya ada fungsi.
Untuk C ++ dan Python akan tergantung pada apakah Anda berada di kelas atau tidak.
'metode' adalah kata berorientasi objek untuk 'fungsi' . Cukup banyak yang ada di sana (mis., Tidak ada perbedaan nyata).
Sayangnya, saya pikir banyak jawaban di sini adalah mengabadikan atau memajukan gagasan bahwa ada beberapa perbedaan yang kompleks dan bermakna.
Sungguh - tidak ada yang terlalu banyak, hanya kata-kata yang berbeda untuk hal yang sama.
[tambahan terlambat]
Bahkan, seperti yang ditunjukkan Brian Neal dalam komentar untuk pertanyaan ini , standar C ++ tidak pernah menggunakan istilah 'metode' ketika merujuk ke fungsi anggota. Beberapa orang mungkin menganggap itu sebagai indikasi bahwa C ++ sebenarnya bukan bahasa berorientasi objek; Namun, saya lebih suka menganggapnya sebagai indikasi bahwa sekelompok orang yang cukup pintar tidak berpikir ada alasan kuat untuk menggunakan istilah yang berbeda.
self
argumennya eksplisit. Dan banyak bahasa memiliki metode statis, yang tidak lulus instance.
this
atau self
, tetapi konstruksi tersebut kemudian biasanya disebut sebagai fungsi, bukan metode.
Secara umum: metode adalah fungsi yang dimiliki kelas, fungsi dapat berada pada ruang lingkup kode yang lain sehingga Anda dapat menyatakan bahwa semua metode adalah fungsi, tetapi tidak semua fungsi adalah metode:
Ambil contoh python berikut:
class Door:
def open(self):
print 'hello stranger'
def knock_door:
a_door = Door()
Door.open(a_door)
knock_door()
Contoh yang diberikan menunjukkan kepada Anda kelas yang disebut "Pintu" yang memiliki metode atau tindakan yang disebut "terbuka", itu disebut metode karena dideklarasikan di dalam kelas. Ada bagian lain dari kode dengan "def" tepat di bawahnya yang mendefinisikan fungsi, itu adalah fungsi karena tidak dideklarasikan di dalam kelas, fungsi ini memanggil metode yang kita definisikan di dalam kelas kita seperti yang dapat Anda lihat dan akhirnya fungsi tersebut sedang disebut dengan sendirinya.
Seperti yang Anda lihat, Anda dapat memanggil fungsi di mana saja tetapi jika Anda ingin memanggil metode, Anda harus melewati objek baru dengan tipe yang sama dengan kelas, metode tersebut dideklarasikan (Class.method (objek)) atau Anda harus memanggil metode di dalam objek (object.Method ()), setidaknya dalam python.
Pikirkan metode sebagai hal yang hanya dapat dilakukan oleh satu entitas, jadi jika Anda memiliki kelas Dog, masuk akal untuk memiliki fungsi kulit hanya di dalam kelas itu dan itu akan menjadi metode, jika Anda juga memiliki kelas Person, masuk akal untuk tulis fungsi "feed" untuk itu bukan milik kelas mana pun karena manusia dan anjing dapat diberi makan dan Anda dapat menyebutnya fungsi karena tidak termasuk kelas mana pun pada khususnya.
Cara mudah untuk mengingat:
Jika Anda merasa ingin membaca di sini adalah "Pengantar saya untuk metode OO"
Gagasan di balik paradigma Berorientasi Objek adalah untuk "mengancam" perangkat lunak ini terdiri dari .. baik "objek". Objek di dunia nyata memiliki properti, misalnya jika Anda memiliki Karyawan, karyawan memiliki nama, id karyawan, posisi, ia milik departemen dll. Dll.
Objek juga tahu bagaimana menangani atributnya dan melakukan beberapa operasi pada mereka. Katakanlah jika kita ingin tahu apa yang sedang dilakukan karyawan saat ini, kita akan bertanya kepadanya.
employe whatAreYouDoing.
"WhatAreYouDoing" itu adalah "pesan" yang dikirim ke objek. Objek tahu bagaimana menjawab pertanyaan itu, dikatakan memiliki "metode" untuk menyelesaikan pertanyaan.
Jadi, cara benda harus mengekspos perilakunya disebut metode. Metode demikian adalah objek artefak harus "melakukan" sesuatu.
Metode lain yang mungkin adalah
employee whatIsYourName
employee whatIsYourDepartmentsName
dll.
Fungsi di sisi lain adalah cara bahasa pemrograman harus menghitung beberapa data, misalnya Anda mungkin memiliki fungsi addValues (8, 8) yang mengembalikan 16
// pseudo-code
function addValues( int x, int y ) return x + y
// call it
result = addValues( 8,8 )
print result // output is 16...
Karena bahasa pemrograman populer pertama (seperti fortran, c, pascal) tidak mencakup paradigma OO, mereka hanya memanggil "fungsi" artefak ini.
misalnya fungsi sebelumnya dalam C adalah:
int addValues( int x, int y )
{
return x + y;
}
Bukanlah "alami" untuk mengatakan suatu objek memiliki "fungsi" untuk melakukan beberapa tindakan, karena fungsi lebih terkait dengan hal-hal matematika sementara seorang Karyawan memiliki sedikit matematika di dalamnya, tetapi Anda dapat memiliki metode yang melakukan persis sama dengan fungsi, misalnya di Jawa ini akan menjadi fungsi addValues yang setara.
public static int addValues( int x, int y ) {
return x + y;
}
Terlihat tidak asing? Itu karena Java berakar pada C ++ dan C ++ pada C.
Pada akhirnya hanya sebuah konsep, dalam implementasinya mereka mungkin terlihat sama, tetapi dalam dokumentasi OO ini disebut metode.
Ini adalah contoh objek Karyawan yang sebelumnya ada di Jawa.
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.
Perbedaannya kemudian, adalah pada "domain" di mana ia diterapkan.
AppleScript memiliki ide "bahasa alami" matphor, yang pada beberapa titik OO miliki. Misalnya Smalltalk. Saya harap mungkin lebih mudah bagi Anda untuk memahami metode dalam objek setelah membaca ini.
CATATAN: Kode ini tidak dapat dikompilasi, hanya sebagai contoh. Jangan ragu untuk memodifikasi posting dan menambahkan contoh Python.
Dalam dunia OO, keduanya biasanya digunakan untuk mengartikan hal yang sama.
Dari perspektif Matematika dan CS murni, suatu fungsi akan selalu mengembalikan hasil yang sama ketika dipanggil dengan argumen yang sama (f (x, y) = (x + y)). Metode di sisi lain, biasanya terkait dengan turunan kelas. Sekali lagi, sebagian besar bahasa OO modern tidak lagi menggunakan istilah "fungsi" untuk sebagian besar. Banyak metode statis bisa sangat mirip fungsi, karena biasanya tidak memiliki keadaan (tidak selalu benar).
Katakanlah fungsi adalah blok kode (biasanya dengan cakupannya sendiri, dan terkadang dengan penutupannya sendiri) yang mungkin menerima beberapa argumen dan mungkin juga mengembalikan hasilnya.
Metode adalah fungsi yang dimiliki oleh objek (dalam beberapa sistem berorientasi objek, lebih tepat untuk mengatakan itu dimiliki oleh kelas). Menjadi "dimiliki" oleh objek / kelas berarti Anda merujuk ke metode melalui objek / kelas; misalnya, di Jawa jika Anda ingin memanggil metode "open ()" yang dimiliki oleh objek "door", Anda perlu menulis "door.open ()".
Biasanya metode juga memperoleh beberapa atribut tambahan yang menggambarkan perilaku mereka di dalam objek / kelas, misalnya: visibilitas (terkait dengan konsep berorientasi objek enkapsulasi) yang mendefinisikan dari objek mana (atau kelas) metode dapat dipanggil.
Dalam banyak bahasa berorientasi objek, semua "fungsi" milik beberapa objek (atau kelas) dan dalam bahasa ini tidak ada fungsi yang bukan metode.
Metode adalah fungsi dari kelas. Dalam jargon normal, orang-orang saling bertukar metode dan fungsi. Pada dasarnya Anda dapat menganggap mereka sebagai hal yang sama (tidak yakin apakah fungsi global disebut metode).
Fungsi adalah konsep matematika. Sebagai contoh:
f(x,y) = sin(x) + cos(y)
mengatakan bahwa fungsi f () akan mengembalikan dosa dari parameter pertama yang ditambahkan ke cosinus dari parameter kedua. Itu hanya matematika. Ketika itu terjadi dosa () dan cos () juga berfungsi. Fungsi memiliki properti lain: semua panggilan ke fungsi dengan parameter yang sama, harus mengembalikan hasil yang sama.
Metode, di sisi lain, adalah fungsi yang terkait dengan objek dalam bahasa berorientasi objek. Ini memiliki satu parameter implisit: objek yang ditindaklanjuti (dan statusnya).
Jadi, jika Anda memiliki objek Z dengan metode g (x), Anda mungkin melihat yang berikut:
Z.g(x) = sin(x) + cos(Z.y)
Dalam hal ini, parameter x dilewatkan, sama seperti pada contoh fungsi sebelumnya. Namun, parameter to cos () adalah nilai yang hidup di dalam objek Z. Z dan data yang tinggal di dalamnya (Zy) adalah parameter implisit ke metode Z's g ().
Fungsi atau metode adalah bagian kode yang dapat dipanggil yang melakukan beberapa operasi dan secara opsional mengembalikan nilai.
Dalam bahasa C istilah fungsi digunakan. Java & C # akan mengatakannya sebagai metode (dan fungsi dalam kasus ini didefinisikan dalam kelas / objek).
A C ++ programmer mungkin menyebutnya fungsi atau kadang-kadang metode (tergantung pada apakah mereka menulis gaya prosedural kode C ++ atau sedang melakukan cara berorientasi objek dari C ++, juga seorang programmer C / C ++ hanya akan menyebutnya fungsi karena istilah 'metode' adalah lebih jarang digunakan dalam literatur C / C ++).
Anda menggunakan fungsi hanya dengan memanggil namanya,
result = mySum(num1, num2);
Anda akan memanggil metode dengan merujuk objeknya terlebih dahulu seperti,
result = MyCalc.mySum(num1,num2);
Secara historis, mungkin ada perbedaan halus dengan "metode" menjadi sesuatu yang tidak mengembalikan nilai, dan "fungsi" yang tidak. Setiap bahasa memiliki leksikon istilah sendiri dengan makna khusus.
Dalam "C" , kata "fungsi" berarti program rutin .
Di Jawa , istilah "fungsi" tidak memiliki arti khusus. Sedangkan "metode" berarti salah satu rutinitas yang membentuk implementasi suatu kelas.
Dalam C # yang akan diterjemahkan sebagai:
public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function
Tapi sungguh, saya mengulangi bahwa sebenarnya tidak ada perbedaan dalam 2 konsep. Jika Anda menggunakan istilah "fungsi" dalam diskusi informal tentang Jawa, orang akan menganggap Anda bermaksud "metode" dan melanjutkan. Jangan menggunakannya dalam dokumen atau presentasi yang tepat tentang Java, atau Anda akan terlihat konyol.
method
... atau saya akan menyebutnya procedure
dan function
.
Fungsi adalah seperangkat logika yang dapat digunakan untuk memanipulasi data.
Sedangkan, Metode adalah fungsi yang digunakan untuk memanipulasi data dari objek di mana ia berada. Jadi secara teknis, jika Anda memiliki fungsi yang tidak sepenuhnya terkait dengan kelas Anda tetapi dideklarasikan di kelas, itu bukan metode; Ini disebut desain yang buruk.
Metode pada kelas bertindak atas instance kelas, yang disebut objek.
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"
}
}
Dalam bahasa OO seperti Object Pascal atau C ++, "metode" adalah fungsi yang terkait dengan objek. Jadi, misalnya, objek "Anjing" mungkin memiliki fungsi "kulit" dan ini akan dianggap sebagai "Metode". Sebaliknya, fungsi "StrLen" berdiri sendiri (ini menyediakan panjang string yang disediakan sebagai argumen). Dengan demikian, ini hanyalah "fungsi". Javascript secara teknis juga Berorientasi Objek tetapi menghadapi banyak keterbatasan dibandingkan dengan bahasa lengkap seperti C ++, C # atau Pascal. Meskipun demikian, perbedaannya harus tetap berlaku.
Beberapa fakta tambahan: C # sepenuhnya berorientasi objek sehingga Anda tidak dapat membuat "fungsi" mandiri. Dalam C # setiap fungsi terikat ke objek dan dengan demikian, secara teknis, "metode." Kicker adalah bahwa beberapa orang di C # menyebutnya sebagai "metode" - mereka hanya menggunakan istilah "fungsi" karena tidak ada perbedaan nyata yang harus dibuat.
Akhirnya - supaya guru Pascal tidak melompat ke sini - Pascal juga membedakan antara "fungsi" (yang mengembalikan nilai) dan "prosedur" yang tidak. C # tidak membuat perbedaan ini secara eksplisit walaupun Anda tentu saja dapat memilih untuk mengembalikan nilai atau tidak.
Karena Anda menyebutkan Python, berikut ini mungkin ilustrasi yang berguna tentang hubungan antara metode dan objek di sebagian besar bahasa berorientasi objek modern. Singkatnya apa yang mereka sebut "metode" hanyalah sebuah fungsi yang dapat melewati argumen tambahan (seperti jawaban lain telah menunjukkan), tetapi Python membuatnya lebih eksplisit daripada kebanyakan bahasa.
# 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")
Sekarang bandingkan fungsi greet_with_greeter
dan metode greet
: satu-satunya perbedaan adalah nama parameter pertama (dalam fungsi saya menyebutnya "penyapa", dalam metode yang saya sebut "mandiri"). Jadi saya bisa menggunakan greet
metode ini dengan cara yang persis sama seperti saya menggunakan greet_with_greeter
fungsi (menggunakan sintaks "dot" untuk mendapatkannya, karena saya mendefinisikannya di dalam kelas):
Greeter.greet(hello_greeter, "World")
Jadi saya telah secara efektif mengubah metode menjadi fungsi. Bisakah saya mengubah fungsi menjadi metode? Nah, karena Python memungkinkan Anda mengacaukan kelas setelah ditentukan, mari kita coba:
Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")
Ya, fungsinya greet_with_greeter
sekarang juga dikenal sebagai metode greet2
. Ini menunjukkan satu-satunya perbedaan nyata antara metode dan fungsi: ketika Anda memanggil metode "pada" objek dengan memanggil object.method(args)
, bahasa secara ajaib mengubahnya menjadi method(object, args)
.
(OO purists mungkin berpendapat metode adalah sesuatu yang berbeda dari suatu fungsi, dan jika Anda masuk ke Python atau Ruby canggih - atau Smalltalk! - Anda akan mulai melihat maksud mereka. Juga beberapa bahasa memberikan metode akses khusus ke bit suatu objek. Tetapi perbedaan konseptual utama masih merupakan parameter tambahan tersembunyi.)
bagi saya: fungsi metode dan fungsi adalah sama jika saya setuju bahwa:
Sama seperti potongan kode yang Anda mungkin memiliki objek yang Anda masukkan dan Anda mungkin memiliki objek yang datang sebagai hasilnya. Selama melakukan itu mereka mungkin mengubah keadaan suatu objek tetapi itu tidak akan mengubah fungsi dasar mereka untuk saya.
Mungkin ada perbedaan definisi dalam fungsi panggilan objek atau kode lainnya. Tapi bukankah itu sesuatu untuk perbedaan verbal dan itu sebabnya orang menukar mereka? Menyebutkan contoh perhitungan yang akan saya lakukan dengan hati-hati. karena saya mempekerjakan karyawan untuk melakukan perhitungan saya:
new Employer().calculateSum( 8, 8 );
Dengan melakukannya dengan cara itu saya dapat mengandalkan majikan yang bertanggung jawab atas perhitungan. Jika dia menginginkan lebih banyak uang, saya membebaskannya dan membiarkan fungsi pemulung membuang karyawan yang tidak digunakan melakukan sisanya dan mendapatkan karyawan baru.
Bahkan berpendapat bahwa metode adalah fungsi objek dan fungsi komputasi yang tidak terhubung tidak akan membantu saya. Deskriptor fungsi itu sendiri dan idealnya dokumentasi fungsi akan memberi tahu saya apa yang dibutuhkan dan apa yang dapat dikembalikan. Selebihnya, seperti memanipulasi keadaan beberapa objek tidak terlalu transparan bagi saya. Saya benar-benar mengharapkan fungsi dan metode untuk menyampaikan dan memanipulasi apa yang mereka klaim tanpa perlu tahu secara rinci bagaimana mereka melakukannya. Bahkan fungsi komputasi murni dapat mengubah status konsol atau menambahkan ke file log.
Dari pemahaman saya, metode adalah operasi apa pun yang dapat dilakukan di kelas. Ini adalah istilah umum yang digunakan dalam pemrograman.
Dalam banyak bahasa metode diwakili oleh fungsi dan subrutin. Perbedaan utama yang digunakan sebagian besar bahasa untuk ini adalah bahwa fungsi dapat mengembalikan nilai kembali ke pemanggil dan subrutin mungkin tidak. Namun banyak bahasa modern hanya memiliki fungsi, tetapi ini secara opsional tidak dapat mengembalikan nilai apa pun.
Misalnya, katakanlah Anda ingin menggambarkan kucing dan Anda ingin itu menguap. Anda akan membuat kelas Cat, dengan metode Menguap, yang kemungkinan besar akan berfungsi tanpa nilai balik.
Untuk pendekatan urutan pertama, metode (dalam gaya C ++ OO) adalah kata lain untuk fungsi anggota, yaitu fungsi yang merupakan bagian dari kelas.
Dalam bahasa seperti C / C ++ Anda dapat memiliki fungsi yang bukan anggota kelas; Anda tidak memanggil fungsi yang tidak terkait dengan metode kelas.
Fungsi adalah konsep yang terutama dimiliki oleh pemrograman berorientasi Prosedur di mana fungsi adalah suatu entitas yang dapat memproses data dan mengembalikan nilai Anda
Metode adalah konsep pemrograman Berorientasi Objek di mana metode adalah anggota kelas yang sebagian besar melakukan pemrosesan pada anggota kelas.
Orang IMHO hanya ingin menciptakan kata baru untuk komunikasi yang lebih mudah antara programmer ketika mereka ingin merujuk ke fungsi di dalam objek.
Jika Anda mengatakan metode, berarti fungsi di dalam kelas. Jika Anda mengatakan fungsi yang Anda maksud hanyalah fungsi di luar kelas.
Yang benar adalah kedua kata tersebut digunakan untuk menggambarkan fungsi. Bahkan jika Anda menggunakannya dengan salah, tidak ada yang salah terjadi. Kedua kata tersebut menggambarkan dengan baik apa yang ingin Anda capai dalam kode Anda.
Fungsi adalah kode yang harus memainkan peran ( fungsi ) dalam melakukan sesuatu. Metode adalah metode untuk menyelesaikan masalah.
Itu melakukan hal yang sama. Itu adalah hal yang sama. Jika Anda ingin menjadi super tepat dan mengikuti konvensi Anda dapat memanggil metode sebagai fungsi di dalam objek.
Saya bukan ahli, tapi ini yang saya tahu:
Fungsi adalah istilah bahasa C, ini merujuk pada sepotong kode dan nama fungsi akan menjadi pengidentifikasi untuk menggunakan fungsi ini.
Metode adalah istilah OO, biasanya memiliki penunjuk ini di parameter fungsi. Anda tidak dapat menjalankan kode seperti C ini, Anda harus menggunakan objek untuk menjalankannya.
Metode yang dipanggil juga berbeda. Di sini memohon makna untuk menemukan alamat potongan kode ini. C / C ++, waktu penautan akan menggunakan simbol fungsi untuk mencari.
Objecive-C berbeda. Meminta makna fungsi C untuk menggunakan struktur data untuk menemukan alamat. Ini berarti semuanya diketahui saat dijalankan.
Saya tahu banyak orang lain sudah menjawab, tetapi saya menemukan bahwa ini adalah jawaban satu baris yang sederhana namun efektif. Meskipun tidak terlihat jauh lebih baik daripada jawaban orang lain di sini, tetapi jika Anda membacanya dengan cermat, ia memiliki semua yang perlu Anda ketahui tentang fungsi metode vs.
Metode adalah fungsi yang memiliki penerima yang didefinisikan, dalam istilah OOP, metode adalah fungsi pada instance objek.
Dari membaca dokumen ini di Microsoft
Anggota yang berisi kode yang dapat dieksekusi secara kolektif dikenal sebagai anggota fungsi dari suatu kelas. Bagian sebelumnya menjelaskan metode, yang merupakan jenis utama anggota fungsi. Bagian ini menjelaskan jenis fungsi anggota lainnya yang didukung oleh C #: konstruktor, properti, pengindeks, peristiwa, operator, dan finalizer.
Jadi metode adalah himpunan bagian dari fungsi. Setiap metode adalah fungsi tetapi tidak setiap fungsi adalah metode, misalnya, constructor
tidak bisa dikatakan sebagai metode tetapi merupakan fungsi.
Fungsi - Suatu fungsi dalam sepotong kode independen yang mencakup beberapa logika dan harus dipanggil secara independen dan didefinisikan di luar kelas.
Metode - Metode adalah bagian independen dari kode yang disebut dalam referensi ke beberapa objek dan didefinisikan di dalam kelas.
Berikut ini beberapa penjelasan untuk metode vs. fungsi menggunakan contoh JavaScript:
test(20, 50);
adalah fungsi define dan digunakan untuk menjalankan beberapa langkah atau mengembalikan sesuatu yang dapat disimpan / digunakan di suatu tempat.
Anda dapat menggunakan kembali kode: Tetapkan kode satu kali dan gunakan berkali-kali.
Anda dapat menggunakan kode yang sama berkali-kali dengan argumen yang berbeda, untuk menghasilkan hasil yang berbeda.
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();
di sini test () dapat menjadi metode dari beberapa objek atau custom prototipe untuk objek inbuilt, berikut penjelasan lebih lanjut:
Metode JavaScript adalah tindakan yang dapat dilakukan pada objek.
Metode JavaScript adalah properti yang mengandung definisi fungsi.
Properti / metode bawaan untuk string dalam javascript:
var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!
Contoh khusus:
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'
Anda dapat mendefinisikan properti untuk String, Array, dll juga misalnya
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");
Beberapa referensi: Metode Objek Javascript , Fungsi , Info lebih lanjut tentang prototipe
TL; DR
Fungsi adalah sepotong kode untuk dijalankan.
Metode adalah Fungsi di dalam Objek.
Contoh fungsi:
function sum(){
console.log("sum")l
}
Contoh Metode:
const obj = {
a:1,
b:2,
sum(){
}
}
Jadi itu sebabnya kami mengatakan bahwa kata kunci "ini" di dalam suatu Fungsi tidak terlalu berguna kecuali jika kami menggunakannya dengan panggilan, terapkan atau ikat .. karena panggilan, terapkan, ikat akan memanggil fungsi itu sebagai metode di dalam objek ==> pada dasarnya mengubah fungsi menjadi metode
Mereka sering dipertukarkan, tetapi suatu metode biasanya merujuk ke subrutin di dalam kelas, dan fungsi biasanya mengacu pada subrutin di luar kelas. misalnya, di Ruby:
# function
def putSqr(a)
puts a ** 2
end
class Math2
# method
def putSqr(a)
puts a ** 2
end
end
Di Jawa, di mana segala sesuatu (kecuali pernyataan paket dan impor) harus ada di dalam kelas, orang hampir selalu menyebutnya sebagai "metode".