Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah pengendali `baru` berfungsi dalam JavaScript dan bagaimana ia mencipta objek dengan rantai prototaipnya?

Bagaimanakah pengendali `baru` berfungsi dalam JavaScript dan bagaimana ia mencipta objek dengan rantai prototaipnya?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 21:28:30194semak imbas

How does the `new` operator work in JavaScript, and how does it create objects with their prototype chains?

Bagaimanakah pengendali baharu berfungsi dalam JavaScript?

Pengendali baharu memainkan peranan penting dalam sistem pengaturcaraan berorientasikan objek JavaScript. Adalah penting untuk memahami fungsinya untuk mencipta dan mengurus objek dengan berkesan.

Menyelami Pelaksanaan Operator baharu

<code class="javascript">new dataObj(args);</code>

Coretan kod ini menggunakan [[ Bina]] kaedah untuk menjalankan satu siri tindakan khusus:

  1. Penciptaan Objek: Ia memulakan objek asli baharu.
  2. Penubuhan Rantaian Prototaip : [[Prototaip]] dalaman objek ini ditetapkan untuk menghala ke arah sifat prototaip Fungsi. Terutama, jika sifat prototaip Fungsi bukan objek (nilai primitif seperti Nombor, String, Boolean, Tidak Ditakrifkan atau Null), Object.prototype sebaliknya digunakan sebagai prototaip.
  3. Seruan Fungsi: Selepas penciptaan objek, fungsi dipanggil dengan objek yang baru dicipta ditetapkan sebagai nilai ini.
  4. Pengendalian Nilai Pulangan: Jika nilai pulangan fungsi yang dipanggil menghasilkan primitif , objek yang dibuat secara dalaman dikembalikan. Walau bagaimanapun, jika objek dikembalikan, objek yang dicipta secara dalaman akan dibuang.

Pelaksanaan Alternatif untuk Kejelasan

Untuk meningkatkan pemahaman, berikut ialah perwakilan alternatif bagi perkara yang dicapai oleh pengendali baharu:

<code class="javascript">function NEW(f) {
  var obj, ret, proto;

  // Check if `f.prototype` is an object, not a primitive
  proto = Object(f.prototype) === f.prototype ? f.prototype : Object.prototype;

  // Create an object that inherits from `proto`
  obj = Object.create(proto);

  // Apply the function setting `obj` as the `this` value
  ret = f.apply(obj, Array.prototype.slice.call(arguments, 1));

  if (Object(ret) === ret) { // the result is an object?
    return ret;
  }
  return obj;
}

// Example usage:
function Foo (arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

var obj = NEW(Foo, 'bar');
obj.prop; // 'bar'
obj.inherited; // 'baz'
obj instanceof Foo // true</code>

Dalam contoh ini:

  • NEW ialah fungsi tersuai yang menyerupai gelagat pengendali baharu.
  • Ia menyemak jika sifat prototaip Fungsi ialah objek,否则使用 Object.prototype 来创建新对象。
  • NEW menggunakan fungsi pada objek yang baru dicipta kerana nilai ini.
  • Nilai pulangan fungsi menentukan objek akhir yang akan dikembalikan.

Atas ialah kandungan terperinci Bagaimanakah pengendali `baru` berfungsi dalam JavaScript dan bagaimana ia mencipta objek dengan rantai prototaipnya?. 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