14.2 Object Extensibility

 extensible คือ attribute ที่ระบุว่าสามารถเพิ่ม property ใหม่ให้กับ object ได้หรือไม่ 

  • Object ปกติจะมีค่าเป็น true
  • Object.isExtensible() ใช้เช็คว่า object เป็น extensible หรือไม่
  • Object.preventExtensions() ใช้ตั้งค่า extensible ให้เป็น false 
  • การเพิ่ม property ให้ object ที่มี extensible เป็น false หรือเปลี่ยนค่า prototype จะทำให้เกิด TypeError
  • ไม่สามารถเปลี่ยน extensible จาก false มาเป็น true ได้
  • แต่ยังสามารถเพิ่ม property ให้ prototype ได้

Sealed Object

ใช้ Object.seal()  
  • Extensible จะเป็น false
  • property ตรงของ object ทั้งหมดจะกลายเป็น nonconfigurable.
  • ทำให้ไม่สามารถลบหรือ config ค่า property ได้
  • ไม่สามารถเปลี่ยนกลับได้
  • Object.isSealed()  ใช้เช็คสถานะ

Freezed Object

object.freeze()
  • ทำให้ไม่สามารถเปลี่ยนแปลงค่า value property ได้
  • accessor property ที่มี function set ยังทำงานปกติ
  • Object.isFrozen() ใช้เช็คสถานะ

Object.preventExtensions() ,  Object.seal() , และ  Object.freeze()  จะคืนค่าเป็น object ที่ส่งเข้าไปดังนั้นจึงใช้ซ้อนกันได้ ทั้งหมดไม่มีผลต่อ proprototype 

let o = Object.seal(Object.create(Object.freeze({x: 1}), {y: {value: 2, writable: true}}));


Comments

Popular posts from this blog

15.8.4 การวาดลงบน cavas

15.8.3 Graphics Attributes

Class ใน JavaScript, การสร้าง class ด้วย keyword class