อนุกรมวิธีของอนุกรมวิธี JavaScript ES5
- หน้าก่อนหน้า ต้นแบบของ JS วัตถุ
- หน้าต่อไป การกำหนดฟังก์ชัน JS
ECMAScript 5 (2009) ได้เพิ่มมาตรฐานวิธีเรียกใช้ตัวแปรใหม่มากมายสำหรับ JavaScript。
管理對象
// 以現有對象為原型創建對象 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) // 如果屬性可以添加到對象,則返回 true Object.isExtensible(object) // 防止更改對象屬性(不是值) Object.seal(object) // 如果對象被密封,則返回 true Object.isSealed(object) // 防止對對象進行任何更改 Object.freeze(object) // 如果對象被凍結,則返回 true 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:
// กำหนด getter get: function() { return language } // กำหนด setter 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"});
เพิ่ม Getter และ Setter
Object.defineProperty()
วิธีนี้ก็สามารถใช้เพื่อเพิ่ม Getter และ Setter ได้:
ตัวอย่าง
// สร้างวัตถุ const person = {firstName:"Bill", lastName:"Gates"}; // กำหนด getter Object.defineProperty(person, "fullName", { get: function () {return this.firstName + " " + this.lastName;} });
ตัวอย่างตั้งค่านายนับ
// กำหนดวัตถุ const obj = {counter:0}; // กำหนด setter 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;
- หน้าก่อนหน้า ต้นแบบของ JS วัตถุ
- หน้าต่อไป การกำหนดฟังก์ชัน JS