Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Memilih Antara Prototaip dan Penutupan untuk Mencipta Objek Tersuai dalam JavaScript?

Bagaimana untuk Memilih Antara Prototaip dan Penutupan untuk Mencipta Objek Tersuai dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-19 17:33:14957semak imbas

How to Choose Between Prototyping and Closure for Creating Custom Objects in JavaScript?

Cara Membuat Objek Tersuai dalam JavaScript

JavaScript menyediakan pelbagai pendekatan untuk mencipta objek tersuai. Berikut ialah dua model berbeza:

Cara Prototaip

Model prototaip berasal dari JavaScript. Ia melibatkan penggunaan sifat prototaip bagi fungsi pembina untuk menambah sifat dan kaedah pada contoh:

function Shape(x, y) {
  this.x = x;
  this.y = y;
}

Shape.prototype.toString = function() {
  return 'Shape at ' + this.x + ', ' + this.y;
};

function Circle(x, y, r) {
  Shape.call(this, x, y); // Invoke base constructor
  this.r = r;
}

Circle.prototype = new Shape(); // Inherit prototype

Circle.prototype.toString = function() {
  return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r;
};

Kelebihan:

  • Ringan dan asli kepada JavaScript
  • Penggunaan Semula prototaip sedia ada
  • Sokongan instanceof

Kelemahan:

  • Pembina asas mesti dipanggil dalam pembina subkelas
  • Memerlukan pembina pengendalian apabila subkelas

Penutupan Cara

Model penutupan mengelakkan warisan dengan menggunakan penutupan untuk menyertakan data dan kaedah khusus contoh:

function Shape(x, y) {
  var that = this;

  this.x = x;
  this.y = y;

  this.toString = function() {
    return 'Shape at ' + that.x + ', ' + that.y;
  };
}

function Circle(x, y, r) {
  var that = this;

  Shape.call(this, x, y);
  this.r = r;

  var _baseToString = this.toString;
  this.toString = function() {
    return 'Circular ' + _baseToString.call(that) + ' with radius ' + that.r;
  };
};

var mycircle = new Circle();

Kelebihan:

  • Menghalang perkongsian contoh kaedah
  • Pengikatan automatik kaedah untuk instance

Kelemahan:

  • Kurang cekap disebabkan oleh salinan kaedah setiap contoh
  • Tidak boleh menggunakan instanceof tanpa logik tersuai

Atas ialah kandungan terperinci Bagaimana untuk Memilih Antara Prototaip dan Penutupan untuk Mencipta Objek Tersuai dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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