Jaka jest różnica między każdą z poniższych definicji tablic.
var myArray = [];
var myArray = {};
var myArray = new Array();
Jaka jest różnica między każdą z poniższych definicji tablic.
var myArray = [];
var myArray = {};
var myArray = new Array();
Odpowiedzi:
Pierwsza i trzecia są równoważne i tworzą nową tablicę. Drugi tworzy nowy pusty obiekt, a nie tablicę.
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
myObject["someValue"]lub myObject.someValue. Pusty obiekt stworzony przez {}will oczywiście nie ma tych właściwości, ale możesz je przypisać w ten sam sposób:myObject.someValue = "hello!"
var a = new Array(5)i var b = [5], to a≠ b(ponieważ a.length= 5 while b.length= 1, a[0]to undefinedwhile b[0]to 5 itd.)
var a;i var a = {};to samo?
var myObject = {}; jest odpowiednikiem var myObject = new Object();
Tak więc drugi przykład nie jest Arrayogólnym, ale ogólnym Object.
Może to być mylące, ponieważ Arrayjest to klasa i Objectjest klasą - a dokładniej Arrayjest to podklasa Object. Tak więc, ogólnie rzecz biorąc, Objectsemantyka ma zastosowanie do Array:
var o = [];
o.push('element1');
o.push('element2');
o['property1'] = 'property value'; // define a custom property.
console.log(o.property1);
console.log(o.length); // Outputs '2' as we've only push()'ed two elements onto the Array
o['property1'] = 'property value'nie dodajesz elementu do tablicy, ale ustawiasz właściwość obiektu tablicy . Zmieszany? Mówiłem ci;) W JavaScript w zasadzie wszystko jest obiektem. Inne obiekty, takie jak Array, RegExp... rozszerzają podstawowy obiekt o dodatkową funkcjonalność. Zostanie utworzony zwykły, pusty obiekt za pomocą nawiasów klamrowych plain_obj = {}.