Setelah mempelajari bahasa tradisional yang berorientasi objek, seperti Java C ++, saya sedikit tidak nyaman ketika saya pindah ke JavaScript, terutama yang disebut fungsi objek dalam JavaScript, yang kadang-kadang saya bingung. Jadi saya hanya menyelesaikan beberapa hal konseptual di bawah ini untuk memfasilitasi pembelajaran dan pemahaman, dan akan menjelaskannya dalam kombinasi dengan beberapa pengetahuan yang berorientasi objek Java.
Pertama mari kita pahami beberapa konsep:
1. Pertama -tama, apa yang dirujuk objek dalam ecmascript? Ada 5 tipe data sederhana dalam ecmascript: tidak terdefinisi, nol, boolean, angka, string. Ada juga tipe data yang kompleks, yaitu objek.
2. Jenis Referensi-Konsep Kelas di Java
Nilai Jenis Referensi --- Konsep Objek di Java
3. Fungsi ---- Konsep Metode di Java
4.Var --- menyatakan operator variabel. Karena variabel JS adalah tipe longgar, longgar berarti dapat digunakan untuk menyimpan data apa pun. Variabel hanya digunakan untuk mewakili placeholder, sehingga variabel tidak harus menentukan string, int, dan hanya var. Perhatikan bahwa objek dapat dinyatakan dengan var.
5.Object (), apa yang --- konstruktor objek di java, konstruktor objek dalam js.
Obyek
JS dapat secara dinamis menambahkan sifat dan metode.
Misalnya, buat instance objek
var obj = new Object();
Variabel OBJ adalah objek objek baru ().
Berikutnya:
var obj = objek baru (); obj.name = 'zeng'; obj.age = 12; obj.fun = function () {console.log (this.name+this.age);}Tetapi ini tidak terlalu enkapsulasi, jadi representasi literal objek lebih sering digunakan
var obj = {name: 'zeng', usia: 12, fun: function () {console.log (this.name+this.age); }} obj.fun (); // Cetak: Zeng12Akses ke Properti Objek:
1. Gunakan kurung
console.log(obj["name"]);
2. Gunakan poin, disarankan untuk menggunakan metode ini
console.log(obj.name );
fungsi
Fungsi adalah bagian penting dari bahasa apa pun. Fungsi disebut js. Anda juga dapat memahami bahwa mereka adalah metode Java dan fungsi bahasa C, semuanya sama. Namun, dalam hal deklarasi dan penggunaan, fungsi JS bisa sangat berbeda.
Contoh fungsi:
function fun () {return "example";} console.log (fun ()); // output: 'contoh'Itu juga mungkin:
var fun = function () {return "Buat fungsi menggunakan ekspresi"}; console.log (fun ()); // output: "Buat fungsi menggunakan ekspresi"Dalam contoh di atas, Anda akan melihat bahwa fungsi tidak memiliki nama fungsi, hanya satu nama variabel yang menyenangkan, dan ada yang lain di akhir ekspresi; titik koma,
Anda bisa memahaminya sebagai ekspresi yang menyatakan variabel. Menyatakan variabel lain ditulis seperti ini:
var name = "Zeng"; // Ada nama variabel dan titik koma
Mari kita ambil contoh dengan parameter:
function fun () {return argumen [0] + argumen [1] + argumen [2];} console.log (fun ("this is", "a", "example")); // output: "Ini adalah contoh"Bukankah itu agak aneh? Pertama -tama, fungsi yang saya buat tidak memiliki parameter. Itu diberikan parameter ketika dipanggil, dan parameter dapat diperoleh dan dikembalikan dalam fungsi.
Sebenarnya, di sini kita perlu membuat titik bahwa fungsi JS tidak keberatan lewat dalam beberapa parameter, juga tidak peduli jenis parameter apa itu! Alasannya adalah bahwa parameter penerimaan internal fungsi disimpan dalam array!
Array adalah argumen di atas. Tentu saja, array tidak keberatan melewati beberapa parameter masuk. Jika ada parameter, saya akan menambahkan satu, dan jika tidak ada parameter, saya akan nol.
Kita dapat menggunakan fitur ini sebagai contoh:
Overloading metode imitasi-gunakan parameter yang berbeda untuk melakukan reaksi yang berbeda
function fun () {if (arguments.length == 1) {return argumen [0]*10; } if (arguments.length == 2) {return (argumen [0]+argumen [1])*10; } return 10;} console.log (fun (11.111)); // Kembalikan 1220! Lai Lai LaiTidak ada kelebihan:
Contoh di atas adalah kelebihan fungsi imitasi. Mengapa saya perlu meniru? Saya akan dapat membuat beberapa fungsi dengan parameter yang berbeda segera.
function fun (num1) {return "fun dengan hanya satu parameter"} fun fun (num1, num2) {return "fun dengan dua parameter";} console.log (fun (11)); // output "menyenangkan dengan dua parameter"Ini jelas disebut fungsi dengan satu parameter, tetapi memang dieksekusi dengan dua parameter. Alasan: JS mendefinisikan dua fungsi dengan nama yang sama, dan namanya hanya milik fungsi yang ditentukan nanti! Lai Lai Jadi tidak ada fitur kelebihan beban di JS.
Nama fungsi adalah pointer:
var fun = function (num1, num2) {return num1+num2;}; var new_fun = fun; fun = null; // Atur fungsi ke nullconsole.log (new_fun (10,20)); // output: 30console.log (fun (10,20)); // Pengecualian: kesenangan bukanlah suatu fungsiDapat dilihat bahwa meskipun menyenangkan = nol; Sebelum ini var new_fun = fun; Artinya, pointer juga menunjuk ke new_fun, sehingga fungsi new_fun () masih dapat dieksekusi, dan tubuh fungsi tidak dibatalkan
Fungsi juga dapat digunakan sebagai nilai:
function add (fun, num) {return fun (num);} function add_10 (num) {return num+10;} console.log (add_10.200)); // Output: 210Itu dapat dijelaskan sebagai berikut:
fungsi add (function, parameter) {return function (parameter lulus);}Argumen.callee dari fungsi tersebut
Berikut adalah contoh rekursif
function fun (num) {if (num <= 1) {console.log (num); kembali 1; } else {console.log (num); return num * argumen.callee (num-1); }} console.log (fun (3)); // output 6