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
Lepaskan: 2024-10-29 03:21:02
asal
555 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan