Mengapa Kaedah Prototaip Perlu Ditakrifkan di Luar Fungsi Pembina?

DDD
Lepaskan: 2024-10-30 21:14:02
asal
597 orang telah melayarinya

Why Should Prototype Methods Be Defined Outside the Constructor Function?

Menetapkan Kaedah Prototaip Dalam Fungsi Pembina: Potensi Perangkap

Secara gaya, sesetengah lebih suka struktur berikut untuk menentukan kaedah prototaip:

var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini mempunyai beberapa kelemahan berbanding struktur alternatif:

var Filter = function( category, value ){
  this.category = category;
  this.value = value;
};// var Filter = function(){...}

Filter.prototype.checkProduct = function( product ){
  // run some checks
  return is_match;
}
Salin selepas log masuk

Kelemahan Fungsian:

  1. Lebih dan Tugasan Tidak Cekap: Kaedah prototaip ditetapkan beberapa kali, yang tidak perlu dan boleh mempunyai implikasi prestasi.
  2. Isu Skop: Merujuk pembolehubah tempatan pembina dari dalam kaedah prototaip boleh membawa kepada keputusan yang tidak dijangka. Contohnya:
var Counter = function(initialValue){
  var value = initialValue;

  // product is a JSON object
  Counter.prototype.get = function() {
      return value++;
  }
};

var c1 = new Counter(0);
var c2 = new Counter(10);
console.log(c1.get());    // outputs 10, should output 0
Salin selepas log masuk

Dalam senario ini, get() mengembalikan nilai nilai pembolehubah tempatan c2 dan bukannya c1 kerana penutupan kaedah merujuk nilai yang ditakrifkan terkini pada prototaip.

Pertimbangan Lain:

  • Prototaip Di Luar Pembina: Struktur pertama melarang mengakses prototaip di luar pembina, yang berkemungkinan mengehadkan fleksibiliti.
  • Penempatan Kaedah: Dalam struktur kedua, kaedah diletakkan terus pada objek dan bukannya prototaip, yang mungkin meningkatkan prestasi dalam beberapa kes.

Kesimpulan :

Walaupun struktur pertama mungkin menarik dari segi gaya, ia boleh memperkenalkan kelemahan fungsi dan isu skop. Secara umumnya disyorkan untuk menetapkan kaedah prototaip di luar fungsi pembina (seperti dalam struktur kedua) untuk mengelakkan masalah yang berpotensi.

Atas ialah kandungan terperinci Mengapa Kaedah Prototaip Perlu Ditakrifkan di Luar Fungsi Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!