Rumah  >  Artikel  >  hujung hadapan web  >  Apakah \"new.target\" dan Bagaimana Ia Berfungsi dalam Kelas ES6?

Apakah \"new.target\" dan Bagaimana Ia Berfungsi dalam Kelas ES6?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 03:52:03663semak imbas

 What is

Memahami "new.target" dalam ECMAScript 2015

Dalam spesifikasi ECMAScript 2015, kata kunci "new.target" diperkenalkan dan secara ringkas disebut tiga kali. Walaupun MDN menyediakan beberapa konteks, ia kekal agak kabur.

Apakah itu "new.target"?

"new.target" ialah sifat meta, juga dikenali sebagai Sasaran Baru. Ia mendapatkan nilai semasa slot dalaman [[NewTarget]] bagi persekitaran fungsi bukan anak panah. Nilai ini ditetapkan apabila fungsi digunakan dengan kata kunci "baharu".

Tujuan "new.target"

Tujuan utamanya ialah untuk menentukan sama ada fungsi dipanggil sebagai pembina atau tidak. Selain itu, ia memainkan peranan penting dalam pelaksanaan kelas ES6.

Cara Kelas ES6 Menggunakan "new.target"

Apabila pembina kelas ES6 dipanggil melalui " X baharu", nilai "ini" tidak dimulakan. Objek belum dicipta. Walau bagaimanapun, tika itu harus diwarisi daripada .prototaip pembina yang asalnya dipanggil.

"new.target" menjejaki pembina "paling luar" yang menerima panggilan "baharu" semasa seruan super(). Prosedur OrdinaryCreateFromConstructor menggunakan "new.target" dan bukannya pembina yang sedang dilaksanakan untuk memastikan pewarisan yang betul.

Contoh:

<code class="javascript">class Parent {
  constructor() {
    console.log(new.target); // Child!
  }
}
class Child extends Parent {
  constructor() {
    super();
    console.log(this);
  }
}

new Child;</code>

Dalam contoh ini, "new .target" akan mengeluarkan "Child" dalam pembina Induk, menunjukkan bahawa ia dipanggil dengan kata kunci "baharu".

Atas ialah kandungan terperinci Apakah \"new.target\" dan Bagaimana Ia Berfungsi dalam Kelas ES6?. 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