GORAGOD.com

GAJAX บทที่ 16 ข้อมูลชนิด hash

hash เป็นชนิดของข้อมูลอย่างหนึ่งของ Javascript ที่มีลักษณะคล้าย Array ที่มีชื่อกำกับ ซึ่งข้อมูลภายใน hash อาจเป็นอะไรก้ได้ เช่น ตัวเลข ข้อความ ฟังก์ชั่น หรือ object โดยมีลักษณะการเขียนตัวแปรชนิดนี้ดังนี้

var hash = {'key1':value1,'key2':value2,......'keyn':valuen}

การกำหนดตัวแปรชนิด hash เราจะกำหนดข้อมูลลงในเครื่องหมาย ปีกกา

key1 เป็นชื่อของข้อมูลนั้นๆ เป็นข้อความ และ value1 คือ ข้อมูลของ key1 ซึ่งจะเป็นอะไรก็ได้ ไม่ว่า ตัวเลข ข้อความ หรือ อื่นๆ ดังที่ได้กล่าวแล้ว

ข้อมูลชนิด hash ก็เหมือนข้อมูลชนิดอื่นๆของ Javascript คือเป็น Object

การอ้างถึงข้อมูลชนิด hash สามารถอ้างถึงด้วย key โดยที่ไม่ต้องเรียงลำดับ เช่น hash.key1 hash.key2 เป็นต้น

ประโยชน์ของข้อมูล hash ก็เหมือนกับข้อมูลอื่นๆทั่วๆไป แต่สำหรับ Frame Work แล้ว มันมีความหมายพิเศษ

ทำไมจึงต้องใช้ข้อมูล hash ใน Frame Work

ลองมาดูตัวอย่าง การสร้างฟังก์ชั่นที่มี พารามิเตอร์ ถึง 20 ตัวกัน

function testFunction(para1, para2, para3, para4,.......para20) {
    // do some thing
    return.....
}

เนื่องจากใน Javascript เราสามารถเรียกใช้ฟังก์ชั่นที่มีพารามิเตอร์โดยไม่ต้องระบุพารามิเตอร์ก็ได้ ถ้าเราจะเรียกใช้ฟังก์ชั่นนั้นๆโดยใช้ค่า default ของพารามิเตอร์นั้นๆตามที่กำหนดไว้ในฟังก์ชั่น

ซึ่งถ้าเราต้องการจะเปลี่ยนแปลงพารามิเตอร์ที่ตัวแรกหรือตัวที่ 2 คงไม่เท่าไร เพราะเราจะต้องกำหนดพารามิเตอร์ให้ตั้งแต่ตัวแรกจนถึงตัวที่ 2 เท่านั้น เช่น

var result = testFunction(val1, val2);

ลองคิดดู หากต้องการเปลี่ยนแค่พารามิเตอร์ตัวที่ 20 เพียงตัวเดียว.....แต่เราต้องเขียนโค้ดเพื่อระบุ พารามิเตอร์ตั้งแต่ตัวแรกจนถึงตัวสุดท้าย....

ข้อมูลชนิด hash เข้ามาช่วยแก้ปัญหานี้ได้ ด้วยคุณสมบัติการใช้งานตัวแปรโดยการระบุ่ค่าคีย์ของมัน

function testFunction(options) {
  // ค่า default ของ option
  this.options = {
     key1: value1,
     key2: value2,
     key3: value3,
     ........
     key20: value20
  };
  // do some thing
  return.....
}

การเรียกใช้ ฟังก์ั่นที่ใช้ hash ในการระบุพารามิเตอร์เราก็สามารถส่งค่าให้ฟังก์ชั่น ด้วยการระบุค่า hash ตรงๆให้กับ ฟังก์ชั่นไปเลย เช่น

var option = {'key20':20};
var result = testFunction(option);

จะเห็นว่า เราสามารถส่งพารามิเตอร์ตัวที่ 20 ให้กับฟังก์ชั่นเพียงตัวเดียวได้ โดยที่ไม่จำเป็นต้องอ้างถึงตัวอื่นเลย ช่วยให้การเขียนโค้ดง่ายขึ้น