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()
Mengomentari pertanyaan (4)
Larutan

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:

var myObject = {
        title:  'Frog',
        url:    '/img/picture.jpg',
        width:  300,
        height: 200
      };

Array

Untuk array, ada's demikian pula hampir tidak ada manfaat bagi yang pernah menggunakan new Array(); atas []; -- dengan satu pengecualian kecil:

var emptyArray = new Array(100);

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

  1. Jangan pernah menggunakan new Object(); -- itu's clunkier dari '{}' dan terlihat konyol.
  2. Selalu gunakan []; - kecuali bila anda perlu dengan cepat membuat "kosong" array dengan panjang yang telah ditetapkan.
Komentar (15)

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.

var objectA = {} //This is an object literal

var objectB = new Object() //This is the object constructor

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.

Komentar (1)

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.

Komentar (0)

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...

Komentar (1)
var objectA = {}

adalah jauh lebih cepat dan, dalam pengalaman saya, lebih sering digunakan, sehingga's mungkin terbaik untuk mengadopsi 's' dan menyimpan beberapa mengetik.

Komentar (3)

Saya percaya {} direkomendasikan di salah satu Javascript vids pada di sini sebagai sebuah coding convention. baru ini diperlukan untuk pseudoclassical warisan. the var 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 membutuhkan baru adalah ketika anda menggunakan konstruktor fungsi. Misalnya:

var Mammal = function (name) {
  this.name = name;
};

Mammal.prototype.get_name = function () {
  return this.name;
}

Mammal.prototype.says = function() {
  return this.saying || '';
}

Maka digunakan seperti:

var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();

Keuntungan lain untuk menggunakan {} sebagai pengganti Objek adalah anda dapat menggunakannya untuk melakukan JSON-style objek literal.

Komentar (0)

Array instansiasi kinerja

Jika anda ingin membuat sebuah array dengan panjang:

var arr = []; lebih cepat dari var arr = new Array();

Jika anda ingin membuat array kosong dengan panjang tertentu:

var arr = new Array(x); lebih cepat dari var 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.

Komentar (1)

Ini pada dasarnya adalah hal yang sama. Gunakan apa pun yang anda menemukan lebih nyaman.

Komentar (4)

OK, hanya ada 2 cara yang berbeda untuk melakukan hal yang sama! Salah satu yang disebut objek literal dan yang lain adalah fungsi pembina!

Tapi baca di atas, ada beberapa hal yang saya'd ingin berbagi:

Menggunakan {} membuat kode anda lebih mudah dibaca, sekaligus menciptakan instans dari Objek 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:

var n = new Object(1); //Number {[[PrimitiveValue]]: 1}

Anehnya,'s membuat Nomor!

var a = new Object([1,2,3]); //[1, 2, 3]

Dan ini adalah menciptakan sebuah Array!

var s = new Object('alireza'); //String {0: "a", 1: "l", 2: "i", 3: "r", 4: "e", 5: "z", 6: "a", length: 7, [[PrimitiveValue]]: "alireza"}

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!

Komentar (6)