Membuat objek kosong di JavaScript dengan {} atau Objek baru()?
Ada berbeda cara untuk membuat kosong obyek dalam JavaScript:
var objectA = {}
var objectB = new Object()
Apakah ada perbedaan dalam bagaimana mesin script menangani mereka? Apakah ada alasan untuk menggunakan salah satu dari yang lain?
Demikian pula hal ini juga memungkinkan untuk membuat array kosong menggunakan sintaks yang berbeda:
var arrayA = []
var arrayB = new Array()
359
9
Benda-benda
Tidak ada manfaat untuk menggunakan
new Object();
-- sedangkan{};
dapat membuat kode anda lebih kompak, dan lebih mudah dibaca.Untuk mendefinisikan benda kosong mereka're teknis yang sama. The
{}
sintaks yang lebih pendek, lebih rapi (kurang Java-ish), dan memungkinkan anda untuk langsung mengisi objek inline - seperti:Array
Untuk array, ada's demikian pula hampir tidak ada manfaat bagi yang pernah menggunakan
new Array();
atas[];
-- dengan satu pengecualian kecil:menciptakan 100 item panjang array dengan semua slot yang mengandung
undefined
- yang mungkin bagus/berguna dalam situasi tertentu (seperti(new Array(9)).bergabung('Na-Na ') + 'Batman!'
).Rekomendasi saya
new Object();
-- itu's clunkier dari '{}' dan terlihat konyol.[];
- kecuali bila anda perlu dengan cepat membuat "kosong" array dengan panjang yang telah ditetapkan.Ya, Ada perbedaan, mereka're tidak sama. It's benar bahwa anda'll mendapatkan hasil yang sama tapi mesin bekerja dalam cara yang berbeda untuk keduanya. Salah satunya adalah objek literal, dan yang lainnya adalah constructor, dua cara yang berbeda untuk menciptakan sebuah objek dalam javascript.
Di JS segala sesuatu adalah obyek, tetapi anda harus menyadari tentang hal berikut dengan new Object(): dapat menerima parameter, dan tergantung pada parameter tersebut, ia akan membuat string, angka, atau hanya objek kosong.
Misalnya:
Objek baru(1)
, akan kembali Nomor.Objek baru("hello")
akan mengembalikan sebuah string, itu berarti bahwa objek konstruktor dapat mendelegasikan -tergantung pada parameter - objek ciptaan lain konstruktor seperti string, number, dll... Itu's sangat penting untuk menjaga ini dalam pikiran ketika anda're mengelola data dinamis untuk membuat benda-benda..Banyak penulis menyarankan untuk tidak menggunakan objek konstruktor ketika anda dapat menggunakan literal notasi sebaliknya, di mana anda akan yakin bahwa apa yang anda're menciptakan adalah apa yang anda're mengharapkan untuk memiliki dalam kode anda.
Saya sarankan anda untuk melakukan membaca lebih lanjut tentang perbedaan antara literal dan notasi konstruktor pada javascript untuk menemukan rincian lebih lanjut.
Ini memiliki hasil akhir yang sama, tapi saya hanya akan menambahkan bahwa menggunakan literal sintaks dapat membantu seseorang menjadi terbiasa dengan sintaks dari JSON (string-ified subset dari objek literal JavaScript sintaks), jadi mungkin akan praktik yang baik untuk masuk ke.
Satu hal lain: anda mungkin telah halus kesalahan jika anda lupa untuk menggunakan operator
new
. Jadi, menggunakan literal akan membantu anda menghindari masalah itu.Pada akhirnya, itu akan tergantung pada situasi serta preferensi.
Objek dan literal array sintaks {}/[] diperkenalkan pada JavaScript 1.2, sehingga tidak tersedia (dan akan menghasilkan kesalahan sintaks) dalam versi-versi dari Netscape Navigator sebelum 4.0.
Jari-jari saya masih default untuk mengatakan new Array(), tapi saya orang yang sangat tua. Untungnya Netscape 3 adalah browser yang banyak orang pernah menganggap hari ini...
adalah jauh lebih cepat dan, dalam pengalaman saya, lebih sering digunakan, sehingga's mungkin terbaik untuk mengadopsi 's' dan menyimpan beberapa mengetik.
Saya percaya
{}
direkomendasikan di salah satu Javascript vids pada di sini sebagai sebuah coding convention.baru
ini diperlukan untuk pseudoclassical warisan. thevar obj = {};
cara membantu untuk mengingatkan anda bahwa ini bukan klasik berorientasi objek bahasa tapi prototypal satu. Dengan demikian satu-satunya waktu anda akan benar-benar membutuhkanbaru
adalah ketika anda menggunakan konstruktor fungsi. Misalnya:Maka digunakan seperti:
Keuntungan lain untuk menggunakan
{}
sebagai penggantiObjek
adalah anda dapat menggunakannya untuk melakukan JSON-style objek literal.Array instansiasi kinerja
Jika anda ingin membuat sebuah array dengan panjang:
var arr = [];
lebih cepat darivar arr = new Array();
Jika anda ingin membuat array kosong dengan panjang tertentu:
var arr = new Array(x);
lebih cepat darivar arr = []; arr[x-1] = tidak terdefinisi
;Untuk benchmark klik berikut: https://jsfiddle.net/basickarl/ktbbry5b/
Saya tidak namun tahu jejak memori kedua, saya bisa membayangkan bahwa
new Array()
memakan lebih banyak ruang.Ini pada dasarnya adalah hal yang sama. Gunakan apa pun yang anda menemukan lebih nyaman.
OK, hanya ada 2 cara yang berbeda untuk melakukan hal yang sama! Salah satu yang disebut
objek literal
dan yang lain adalah fungsipembina
!Tapi baca di atas, ada beberapa hal yang saya'd ingin berbagi:
Menggunakan
{}
membuat kode anda lebih mudah dibaca, sekaligus menciptakan instans dariObjek
atau lainnya built-in fungsi tidak dianjurkan...Juga, Obyek fungsi mendapat parameter sebagai it's fungsi, seperti
Objek(params)
... tapi{}
adalah murni cara untuk memulai suatu objek dalam JavaScript...Menggunakan objek literal membuat kode anda terlihat jauh lebih bersih dan lebih mudah dibaca bagi pengembang lain dan itu's inline dengan praktek-praktek terbaik dalam JavaScript...
Sedangkan Objek dalam Javascript dapat hampir apa-apa,
{}
hanya menunjuk ke objek javascript, untuk menguji cara kerjanya, jangan di bawah ini pada kode javascript atau konsol:Anehnya,'s membuat Nomor!
Dan ini adalah menciptakan sebuah Array!
dan ini aneh hasil untuk
String
!Jadi jika anda membuat sebuah objek,'s dianjurkan untuk menggunakan objek literal, untuk memiliki standar kode dan menghindari kode kecelakaan seperti di atas, juga kinerja bijaksana menggunakan
{}
lebih baik dalam pengalaman saya!