JS 14 - 控制物件

大家好!

文章到今天也快要写一半了,谢谢各位的阅读。
我们进入今天的主题吧!


控制物件

先建立一个物件并赋值:

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,我们明天再见!


<<:  D28 第十五周 (回忆篇)

>>:  DAY 16:Abstract Factory Pattern,膜拜那个工厂之神吧!

[Day7]Where子句

前几篇介绍了Select语句,接下来会以相同模式介绍Where子句。 Where子句格式: Wher...

Day10 - this&Object Prototypes Ch3 Objects - Contents - Getters and Setters

作者说明我们最好都同时定义 Getters 与 Setters ,因为如果只定义了 Getter 但...

ASP.NET MVC 从入门到放弃(Day2) -Visual Studio 2019 专案建立

接下来讲讲後续说明会用到的专案建立方式 主控台建立 (Framework4.7.2) 1.开启Vis...

[13th][Day26] pod

container 提供了强大的隔离功能,可以把 service 提供的服务放在 container...

[Angular] Forms - Control Value Accessor [上]

前言 在前两篇的介绍中我们了解到了什麽是Angular中的form,并且对Reactive form...