Rumah >hujung hadapan web >tutorial js >Bagaimanakah pengendali `baru` berfungsi di belakang tabir untuk mencipta dan memulakan objek dalam JavaScript?

Bagaimanakah pengendali `baru` berfungsi di belakang tabir untuk mencipta dan memulakan objek dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 03:21:02586semak imbas

How does the `new` operator work behind the scenes to create and initialize objects in JavaScript?

Cara Operator baharu Mencipta dan Memulakan Objek dalam JavaScript

Pengendali baharu ialah kata kunci yang berkuasa dalam JavaScript yang digunakan untuk mencipta objek baharu. Ia memainkan peranan penting dalam pengaturcaraan berorientasikan objek tetapi boleh mencabar untuk difahami sepenuhnya, terutamanya berkaitan dengan rantaian prototaip.

Memahami Operator baharu

Apabila menggunakan pengendali baharu dengan fungsi, langkah berikut berlaku secara dalaman:

  1. Objek asli baharu dicipta.
  2. Harta dalaman [[Prototaip]] objek ditetapkan kepada sifat prototaip fungsi.
  3. Fungsi dipanggil dengan objek yang baru dicipta sebagai nilai ini.
  4. Jika fungsi mengembalikan nilai primitif, objek yang dicipta secara dalaman dikembalikan.
  5. Jika tidak, jika fungsi mengembalikan objek, objek yang dicipta secara dalaman akan ditinggalkan.

Satu Contoh Pelaksanaan

Untuk menunjukkan kefungsian operator baharu, berikut ialah pelaksanaan yang setara:

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

  // Check if `f.prototype` is an object
  proto = f.prototype ? f.prototype : Object.prototype;

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

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

  // Return the object from the function or the newly created `obj`
  return Object(ret) === ret ? ret : obj;
}</code>

Contoh Penggunaan

Pertimbangkan contoh ini:

<code class="javascript">function Foo(arg) {
  this.prop = arg;
}
Foo.prototype.inherited = 'baz';

let obj = NEW(Foo, 'bar');
console.log(obj.prop); // Output: "bar"
console.log(obj.inherited); // Output: "baz"
console.log(obj instanceof Foo); // Output: true</code>

Ini menunjukkan cara pengendali baharu mencipta objek yang mewarisi daripada prototaip fungsi dan membenarkan akses kepada sifat dan kaedahnya.

Atas ialah kandungan terperinci Bagaimanakah pengendali `baru` berfungsi di belakang tabir untuk mencipta dan memulakan objek 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