ဂျက်တ်စ် ES5 အမှုံ့

အက်မ်မာစ်စစ် ၅ (၂၀၀၉) သတင်းပြင်းများကို ဂျာပ်ရေးသားလိုက်သည်。

အရာသတ် အပိုင်းအခြာ

// အရာသတ် အပိုင်းအခြာ ပြုလုပ်
Object.create()
// အရာသတ် ပြင်ဆင် သို့မဟုတ် ထပ်ထည့်
Object.defineProperty(object, property, descriptor)
// အရာသတ် ပြင်ဆင် သို့မဟုတ် ထပ်ထည့်
Object.defineProperties(object, descriptors)
// အရာသတ် ကို ခေါ်ခြင်း
Object.getOwnPropertyDescriptor(object, property)
// အရာသတ် ဖွဲ့စည်း အဖွဲ့ ပြန်လည်
Object.getOwnPropertyNames(object)
// အရာသတ် ပုံစံ ကို ခေါ်ခြင်း
Object.getPrototypeOf(object)
// အရာသတ် ဖွဲ့စည်း အဖွဲ့ ပြန်လည်
Object.keys(object)

အရာသတ် ကာကွယ်

// အရာသတ် အပိုင်းအခြာ အသုံးပြု
Object.preventExtensions(object)
// အရာသတ် အပိုင်းအခြာ အသုံးပြုနိုင်တဲ့က အသံထွက်
Object.isExtensible(object)
// အရာသတ် အပိုင်းအခြာ ပိတ်ပင်
Object.seal(object)
// အရာသတ် အပိုင်းအခြာ ပိတ်ပင်တဲ့က အသံထွက်
Object.isSealed(object)
// အရာသတ် အပိုင်းအခြာ ပိတ်ပင်
Object.freeze(object)
// အရာသတ် အပိုင်းအခြာ ပိတ်ပင်တဲ့က အသံထွက်
Object.isFrozen(object)

အရာသတ် အရာသတ်

ပုံစံ

Object.defineProperty(object, property, {value : value})

အက်ယ်လက်စတာ

အမှတ်အသား ပြင်ဆင် အမှတ်အသား

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// အရာသတ် ပြင်ဆင်
Object.defineProperty(person, "language", {value : "NO"});

ကိုယ်တိုင် စစ်ဆေးပါ

အမှတ်အသား ပြင်ဆင်

ES5 က အရာသတ် အမှတ်အသား ပြင်ဆင်နိုင်

writable : true      // အရာသတ် အရာသတ် ပြင်ဆင်နိုင်
enumerable : true    // အရာသတ် ဖွဲ့စည်းနိုင်
configurable : true  // အရာသတ် ပြန်လည်ပြင်ဆင်နိုင်
writable : false     // အရာသတ်သည် ပြင်ဆင်မပါ
enumerable : false   // ဖွဲ့စည်းမှုမပါဘဲ
configurable : false // အရာများ ကို အပြင်းအထန် ပြင်ဆင်ခြင်း မပြုနိုင်

ES5 က getter နှင့် setter ကို ပြောင်းလဲနိုင်ပါ

// ဒေါင်းကြောင်း ကို သတ်မှတ်ပါ
get: function() { return language }
// ဒေါင်းကြောင်း ကို သတ်မှတ်ပါ
set: function(value) { language = value }

အမှတ်အသား တစ်ခု ကို language ကို သာမန် ဖြစ်ပါ

Object.defineProperty(person, "language", {writable:false});

အမှတ်အသား တစ်ခု ကို language ကို အယူအယျင် ဖြစ်ပါ

Object.defineProperty(person, "language", {enumerable:false});

အရာများ အားလုံး ကို ပြောကြားပါ

အမှတ်အသား တစ်ခု ကို အရာများ အားလုံး ကို ပြောကြားပါ

အက်ယ်လက်စတာ

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.getOwnPropertyNames(person);  // အရာများ သတ်မှတ်ပါ

ကိုယ်တိုင် စစ်ဆေးပါ

အယူအယျင် အရာများ ကို ပြောကြားပါ

အမှတ်အသား တစ်ခု ကို အယူအယျင် အရာများ ကို သာ ပြောကြားပါ

အက်ယ်လက်စတာ

const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
Object.defineProperty(person, "language", {enumerable:false});
Object.keys(person);  // အယူအယျင် အရာများ သတ်မှတ်ပါ

ကိုယ်တိုင် စစ်ဆေးပါ

ထပ်ပေါင်းအရာ

အမှတ်အသား တစ်ခု ကို အရာများ သို့ ထပ်ပေါင်းပါ

အက်ယ်လက်စတာ

// အရာများ ကို ဖန်တီးပါ
const person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "EN"
};
// အရာများ ကို ထပ်ပေါင်းပါ
Object.defineProperty(person, "year", {value:"2008"});

ကိုယ်တိုင် စစ်ဆေးပါ

ဒေါင်းကြောင်း နှင့် ဒေါင်းကြောင်း ကို ထပ်ပေါင်းပါ

Object.defineProperty() ဒေါင်းကြောင်း နှင့် ဒေါင်းကြောင်း ကို ထပ်ပေါင်းပါ

အက်ယ်လက်စတာ

// အရာများ ကို ဖန်တီးပါ
const person = {firstName:"Bill", lastName:"Gates"};
// ဒေါင်းကြောင်း ကို သတ်မှတ်ပါ
Object.defineProperty(person, "fullName", {
  get: function () {return this.firstName + " " + this.lastName;}
});

ကိုယ်တိုင် စစ်ဆေးပါ

အစစ်အရေးသူ အက်ယ်လက်စတာ

// အရာများ ကို သတ်မှတ်ပါ
const obj = {counter:0};
// ဒေါင်းကြောင်း ကို သတ်မှတ်ပါ
Object.defineProperty(obj, "reset", {
  get : function () {this.counter = 0;}
});
Object.defineProperty(obj, "increment", {
  get : function () {this.counter++;}
});
Object.defineProperty(obj, "decrement", {
  get : function () {this.counter--;}
});
Object.defineProperty(obj, "add", {
  set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, "subtract", {
  set : function (i) {this.counter -= i;}
});
// အစီအစဉ်အမှတ်
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

ကိုယ်တိုင် စစ်ဆေးပါ