Menyebabkan
Saya menggunakan prototipe.js hari itu, jadi saya membukanya untuk melihat bahwa saya melihat beberapa baris dan berkabut.
Fragmen Kode Propotype.js
Kodenya adalah sebagai berikut:
var class = {
Create: function () {
Return function () {
this.initialize.Apply (ini, argumen);
}
}
}
// Metode penggunaan kelas adalah sebagai berikut
var a = class.create ();
A. prototipe = {
inisialisasi: function (v) {
ini.
}
showValue: function () {
waspada (ini.value);
}
}
var a = new a ('helloord!');
a.
l menginisialisasi?
Apa yang dilakukan metode L Apply?
L argumen variabel?
l Mengapa metode inisialisasi dieksekusi setelah a baru?
Temukan jawabannya:
Kedua, objek penargetan JS
Apa itu Inisialisasi?
Ini hanya variabel, mewakili suatu metode, dan penggunaannya adalah konstruktor kelas.
Fungsi spesifik didukung oleh JS, jadi apa objek JS? Apa yang sama dan berbeda dari java?
Lihat kodenya:
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
var className = function (v) {{
this.value = v;
this.getValue = function () {
Kembalikan nilai ini;
}
this.setValue = function (v) {
this.value = v;
}
}
Jadi apa perbedaan antara fungsi dan kelas di JS?
Bahkan, itu sama.
menyukai
Kodenya adalah sebagai berikut:
Var objectName1 = className baru ("a");
Di antara mereka, ObjectName1 adalah objek yang diperoleh setelah melakukan konstruktor ClassName, dan ini dalam fungsi ClassName mengacu pada objek yang dibangun setelah yang baru, sehingga ObjectName1 akan memiliki satu atribut dan dua metode setelah yang berikut. Anda dapat memanggil mereka melalui ini:
Kodenya adalah sebagai berikut:
ObjectName1.setValue ('' Hello '');
Alert (objectName1.getValue ());
Peringatan (ObjectName1.Value);
Jadi
Kodenya adalah sebagai berikut:
var objectName2 = classname ("b");
Jadi apa yang didapat ObjectName2? Jelas nilai pengembalian metode ini, di sini ClassName hanya digunakan sebagai fungsi biasa (meskipun huruf pertama dikapitalisasi). Tetapi tidak ada nilai pengembalian di nama kelas sebelumnya, jadi ObjectName2 akan tidak diperkirakan sehingga siapa yang "B" memberi? Tidak ada objek di sini, tetapi hanya melakukan metode ini secara sederhana, jadi "B" ini ditugaskan ke jendela objek yang menyebut metode ini.
var objectName2 = classname ("b");
peringatan (Window.Value);
Jadi semua fungsi dalam JS adalah sama, tetapi penggunaannya mungkin berbeda (digunakan untuk membangun objek atau menjalankan proses).
Mari kita kembali ke tema apa yang dilakukan inisialisasi?
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
var class = {
Create: function () {
Return function () {
this.initialize.Apply (ini, argumen);
}
}
}
var a = class.create ();
Kode ini adalah membuat salinan fungsi ke A, fungsi ini
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
Fungsi () {
this.initialize.Apply (ini, argumen);
}
Dan metode terakhir digunakan untuk membuat konstruktor. Saat menggunakan konstruktor ini untuk membangun objek, itu akan membiarkan metode inisial () dari variabel inisialisasi dari konstruktor mengeksekusi metode Apply (). Dengan cara ini, itu akan dihubungi saat diinisialisasi objek (cara menghubungi Apply).
Jadi
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
A.prototype = {
inisialisasi: function (v) {
ini.
}
showValue: function () {
waspada (ini.value);
}
}
Apa artinya?
Prototipe berarti "prototipe". A adalah fungsi (), maka A. prototipe adalah variabel dalam fungsi, yang sebenarnya merupakan objek. Metode apa yang dimiliki objek ini, jadi metode apa yang dihasilkan objek oleh fungsi?
var a = new a ('helloord!');
a.
Oleh karena itu, objek A juga akan memiliki metode inisialisasi. '), Inisialisasi kembali untuk memanggil metode Apply. Ini adalah metode memanggil inisialisasi.
3. Call () dan apply ()
Mari kita mulai belajar (), temukan beberapa informasi secara online, dan gabungkan penelitian Anda sendiri untuk memahami fungsi panggilan () dan apply ().功能基本一样 , function (). Call (objek, {}, {} ……) 或者 function (). Terapkan (objek, [……]) 的功能就是对象 objek 调用这里的 funciton () , 不同之处是Parameter panggilan diteruskan ke funciton dari yang kedua. Apply hanya memiliki dua parameter, dan yang kedua adalah array, yang menyimpan semua parameter yang diteruskan ke fungsi.
this.initialize.Apply (ini, argumen);
Apa artinya?
Yang pertama di sini mengacu pada objek yang dihasilkan setelah memanggil konstruktor dengan panggilan baru, yang merupakan A sebelumnya, maka tentu saja yang kedua ini harus merujuk pada objek yang sama. Maka kalimat ini adalah ini (yaitu, a) untuk memanggil metode inisialisasi, dan parameter adalah objek argumen (jumlah array parameter) oleh karena itu makna inisialisasi "benar.
Jadi bagaimana cara lulus parameter metode inisialisasi?
Keempat, objek argumen
Kode ini dapat menjelaskan semuanya:
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
function test () {
Waspada (tipe argumen);
untuk (var i = 0; i <arguments.length; i ++) {
Peringatan (argumen [i]);
}
}
tes ("1", "2", "3");
tes ("a", "b");
Setelah dieksekusi, peringatan (tipe argumen); Kemudian mainkan 1, 2, dan 3 pada gilirannya. Jelaskan bahwa argumen adalah sederetan yang solid untuk memanggil fungsi.
Kodenya adalah sebagai berikut:
Salin kode kode sebagai berikut:
var class = {
Create: function () {
Return function () {
this.initialize.Apply (ini, argumen);
}
}
}
Argumen adalah serangkaian konstruktor yang kokoh yang dikembalikan oleh create, jadi
var a = new a ('helloord!');
Pada saat 'Hellooword!'