ความแตกต่างระหว่างคำจำกัดความอาร์เรย์แต่ละรายการต่อไปนี้คืออะไร
var myArray = [];
var myArray = {};
var myArray = new Array();
ความแตกต่างระหว่างคำจำกัดความอาร์เรย์แต่ละรายการต่อไปนี้คืออะไร
var myArray = [];
var myArray = {};
var myArray = new Array();
คำตอบ:
ที่หนึ่งและสามเทียบเท่ากันและสร้างอาร์เรย์ใหม่ อย่างที่สองสร้างวัตถุว่างใหม่ไม่ใช่อาร์เรย์
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
myObject["someValue"]
หรือmyObject.someValue
. {}
แน่นอนว่าวัตถุว่างที่สร้างขึ้นโดยพินัยกรรมไม่มีคุณสมบัติเหล่านั้น แต่คุณสามารถกำหนดให้กับวัตถุเหล่านั้นได้ในลักษณะเดียวกัน:myObject.someValue = "hello!"
var a = new Array(5)
และvar b = [5]
แล้วa
≠ b
(ตั้งแต่a.length
= 5 ในขณะที่b.length
= 1 a[0]
คือundefined
ในขณะที่b[0]
5 และอื่น ๆ .)
var a;
และvar a = {};
เดียวกันได้หรือไม่
var myObject = {};
เทียบเท่ากับ var myObject = new Object();
ดังนั้นตัวอย่างที่สองไม่ได้เป็นแต่โดยทั่วไปArray
Object
นี้ได้รับความสับสนเป็นArray
เป็นชั้นและObject
เป็นชั้นเรียน - แม่นยำมากขึ้นเป็นชั้นย่อยของArray
Object
ดังนั้นโดยทั่วไปObject
ความหมายจึงใช้ได้กับ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'
นี้คุณจะไม่จริงการเพิ่มองค์ประกอบไปยังอาร์เรย์ แต่การตั้งค่าคุณสมบัติของที่วัตถุอาร์เรย์ สับสน? ฉันบอกแล้ว;) ใน JavaScript โดยพื้นฐานแล้วทุกอย่างเป็นวัตถุ วัตถุอื่น ๆ เช่นArray
, RegExp
... ขยายวัตถุขั้นพื้นฐานที่มีฟังก์ชั่นเพิ่มเติม plain_obj = {}
ธรรมดาวัตถุที่ว่างเปล่าจะถูกสร้างขึ้นด้วยวงเล็บปีกกา