大家好!
文章到今天也快要寫一半了,謝謝各位的閱讀。
我們進入今天的主題吧!
先建立一個物件並賦值:
let record = { name: null, test: true };
接下來的方法會有什麼差異呢?讓我們來看看:
Object.freeze
Object.freeze(record);
Object.isFrozen(record); // true
/* 更改屬性 ✗ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✗ */
delete record.test; // false
record; // { name: null, test: true }
Object.preventExtensions
Object.preventExtensions(record);
Object.isExtensible(record); // true
/* 更改屬性 ✓ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✓ */
delete record.test; // true
record; // { name: 'Felix' }
Object.seal
Object.seal(record);
Object.isSealed(record); // true
/* 更改屬性 ✓ */
record.name = 'Felix';
/* 新增屬性 ✗ */
record.date = '2021-09-29';
/* 刪除屬性 ✗ */
delete record.test; // false
record; // { name: 'Felix', test: true }
先來介紹屬性描述器的使用方法:
/* 下方屬性值皆為預設值 */
Object.defineProperty(object, property, {
/* 屬性值 */
value: undefined,
/* 能否重新描述 */
configurable: false,
/* 能否被列舉 */
enumerable: false,
/* 能否更改屬性值 */
writable: false,
/* Getter */
get: undefined,
/* Setter */
set: undefined
});
舉例一下:
let record = { name: 'Felix' };
Object.defineProperty(record, 'date', {
value: '2021-09-29'
});
/* 更改屬性 ✗ */
record.date = null;
/* 刪除屬性 ✗ */
delete record.date; // false
/* 列舉屬性 ✗ */
for (let key in record) {
console.log(key);
}
// Log: name
record; // { name: 'Felix', date: '2021-09-29' }
差不多也到尾聲了,接下來我們要介紹的是物件的 this
關鍵字。
如果對文章有任何疑問,也歡迎在下方提問和建議!
我是 Felix,我們明天再見!