การเข้าใจ ความยาวของวัตถุ JavaScript: แนวทางปฏิบัติที่ดีที่สุดและโซลูชันสมัยใหม่

วัตถุ JavaScript ถูกใช้งานอย่างแพร่หลาย แต่คุณจะระบุความยาวของมันได้อย่างไร? หากคุณเคยต้องการทราบว่ามีคุณสมบัติใดบ้างในวัตถุ คุณไม่ใช่คนเดียว บทความนี้สำรวจวิธีที่ดีที่สุดในการหาความยาวของวัตถุ JavaScript และความซับซ้อนที่เกี่ยวข้อง รวมถึงการอภิปรายเกี่ยวกับสัญลักษณ์และคุณสมบัติของมัน

ปัญหา

เมื่อทำงานกับวัตถุ JavaScript คุณอาจต้องการทราบว่ามีคุณสมบัติจำนวนเท่าไหร่ ตัวอย่างเช่น วัตถุง่ายๆ ดังนี้:

const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;

คุณอาจถามว่า: มีวิธีในตัวหรือตามธรรมเนียมที่จะหาความยาวของวัตถุนี้ไหม?

โซลูชันสมัยใหม่

ตั้งแต่ปี 2016 เบราว์เซอร์หลายตัวรองรับ ES5 และเวอร์ชันที่สูงกว่า ทำให้เราสามารถกำหนดความยาวของวัตถุได้ง่ายด้วยวิธี Object.keys() วิธีนี้จะส่งกลับอาร์เรย์ของชื่อคุณสมบัติที่เป็นของวัตถุเอง และโดยการวัดความยาวของอาร์เรย์นี้ เราสามารถทราบได้ว่าหมายเลขของคุณสมบัติในวัตถุมีทั้งหมดเท่าไหร่

การใช้ Object.keys()

นี่คือตัวอย่างวิธีการใช้งาน:

var size = Object.keys(myObject).length;
console.log(size); // แสดงผล: 3

ข้อดีของการใช้ Object.keys()

  • ความเรียบง่าย: มันชัดเจนและง่ายต่อการใช้งาน
  • ไม่ต้องแก้ไข Prototype: วิธีนี้ไม่ต้องการการเปลี่ยนแปลงใน Prototype ของ Object ซึ่งเป็นสิ่งสำคัญเพื่อหลีกเลี่ยงบั๊กและความขัดแย้งที่อาจเกิดขึ้นในโค้ดของคุณ

คุณสมบัติของสัญลักษณ์

เป็นสิ่งสำคัญที่ต้องทราบว่าวัตถุสามารถมีคุณสมบัติที่เป็นสัญลักษณ์ซึ่ง Object.keys() จะไม่ส่งกลับ สัญลักษณ์เป็นประเภทข้อมูลพิเศษใน JavaScript ใช้สร้างตัวระบุที่ไม่ซ้ำสำหรับคุณสมบัติของวัตถุ ฟีเจอร์นี้ช่วยป้องกันการเขียนทับคุณสมบัติ ทำให้โค้ดของคุณมีความแข็งแกร่งมากขึ้น

การเข้าถึงคุณสมบัติของสัญลักษณ์

คุณสามารถใช้ Object.getOwnPropertySymbols() เพื่อดึงคุณสมบัติเหล่านี้ นี่คือวิธีการจัดการกับทั้งคุณสมบัติปกติและคุณสมบัติที่เป็นสัญลักษณ์:

var person = {
  [Symbol('name')]: 'John Doe',
  [Symbol('age')]: 33,
  "occupation": "Programmer"
};

// การหาความยาวของคุณสมบัติที่ไม่ใช่สัญลักษณ์
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // แสดงผล: 1

// การหาความยาวของคุณสมบัติที่เป็นสัญลักษณ์
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // แสดงผล: 2

สรุปเกี่ยวกับการใช้วิธีการ

โดยสรุป นี่คือวิธีการหลักที่คุณควรตรวจสอบเมื่อคำนวณความยาวของวัตถุ JavaScript:

  • Object.keys(obj): ส่งกลับจำนวนของคุณสมบัติที่มีคีย์เป็นสตริงที่สามารถเสนอราคาได้
  • Object.getOwnPropertyNames(obj): ส่งกลับจำนวนของคุณสมบัติทั้งหมดที่เป็นของตัวเอง (ไม่สนใจสัญลักษณ์)
  • Object.getOwnPropertySymbols(obj): ส่งกลับจำนวนของคุณสมบัติที่เป็นสัญลักษณ์ที่เป็นของตัวเอง

วิธีการทางเลือก

ในโค้ดเบสเก่า วิธีปกติคือการสร้างฟังก์ชันเพื่อนับขนาดด้วยตนเอง:

Object.size = function(obj) {
  var size = 0;
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) size++;
  }
  return size;
};

// การหาขนาดของวัตถุ
const myObj = {};
var size = Object.size(myObj);

การระมัดระวัง

โดยทั่วไปแล้ว การเพิ่มวิธีการไปยัง Object.prototype ไม่ใช่แนวทางที่ดี นักพัฒนาอาจต้องพบกับพฤติกรรมที่ไม่คาดคิดในแอปพลิเคชันของคุณ

บทสรุป

การระบุความยาวของวัตถุ JavaScript เป็นงานที่พบได้บ่อยซึ่งสามารถทำได้อย่างมีประสิทธิภาพด้วยการใช้ Object.keys() ในขณะที่ยังคำนึงถึงสัญลักษณ์เพื่อความสมบูรณ์ ด้วยเครื่องมือเหล่านี้ คุณจะสามารถจัดการกับจำนวนคุณสมบัติวัตถุได้อย่างมั่นใจและมีประสิทธิภาพในแอปพลิเคชัน JavaScript ของคุณ