Rumah > hujung hadapan web > tutorial js > Bilakah Pembina JavaScript Boleh Mengembalikan Sesuatu Selain 'ini'?

Bilakah Pembina JavaScript Boleh Mengembalikan Sesuatu Selain 'ini'?

DDD
Lepaskan: 2024-11-11 07:11:02
asal
639 orang telah melayarinya

When Can a JavaScript Constructor Return Something Other Than 'this'?

Kejadian Di mana Pembina Mengembalikan Nilai Selain daripada 'ini'

Dalam JavaScript, apabila pembina dipanggil menggunakan kata kunci baharu, ia biasanya mengembalikan objek yang baru dibuat. Walau bagaimanapun, dalam keadaan tertentu, ia boleh mengembalikan nilai yang berbeza untuk mengelak daripada mengembalikan nilai ini.

Syarat untuk Mengembalikan Nilai Lain

Seperti yang digariskan dalam Spesifikasi ECMA-262 Edisi Ketiga [[Construct]] sifat dalaman (langkah 7), nilai pulangan pembina (Result(6)) menentukan sama ada ini akan dikembalikan atau tidak. Jika Result(6) ialah bukan jenis Objek, ia akan dikembalikan dan bukannya ini. Syarat ini penting untuk pelaksanaan pembina yang betul.

Contoh

Pertimbangkan pembina berikut:

function Foo() {
  return 10; // Returning a non-object primitive
}

var foo = new Foo();
Salin selepas log masuk

Dalam contoh ini, sejak 10 ialah primitif bukan objek, ia akan dikembalikan sebagai hasil daripada pembina Foo(). Oleh itu, foo akan diberikan nilai primitif 10 dan (instance Foo() baharu bagi Foo) akan menilai kepada false kerana foo ialah jenis primitif.

Ringkasan

Ringkasnya, pembina boleh mengembalikan nilai selain daripada ini hanya apabila nilai pulangan pembina (Result(6)) adalah bukan jenis Objek. Keadaan ini membenarkan pembinaan objek dengan nilai bukan objek atau untuk menghantar kawalan kepada pembina lain.

Atas ialah kandungan terperinci Bilakah Pembina JavaScript Boleh Mengembalikan Sesuatu Selain 'ini'?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan