美文网首页
属性特性

属性特性

作者: zhulichao | 来源:发表于2020-07-24 09:04 被阅读0次
ES5定义了一个名叫“属性描述符”的对象,用于描述属性的各种特征,只能在Object.defineProperty或Object.defineProperties中使用。属性描述符对象有:

4个属性:

> configurable: 可配置性,表示能否修改属性特性,能否把属性修改为访问器属性,或者能否通过delete删除属性从而重新定义属性,默认true。设置为false后,再调用Object.defineProperty修改属性特性都会报错。
> enumerable: 可枚举性,表示能否通过for-in遍历得到属性,默认true。
> writable: 可写性,表示能否修改属性的值,默认为true。
> value: 数据属性,表示属性的值,默认为undefined。

2个存取器属性,分别是get和set,可以代替value和writable,存取器和value、writable不能同时存在:

> get: 在读取属性时调用的函数,只指定get则表示属性为只读属性,默认值为undefined。
> set: 在写入属性时调用的函数,只指定set则表示属性为只写属性,默认值为undefined。

```
// 修改obj的name属性特性
Object.defineProperty(obj, 'name', {
    writable: false,
    value: 'Tom',
)};
// 一次修改obj的多个属性特性
Object.defineProperties(obj, {
    _year: {
        value: 2017,
    },
    edition: {
        value: 1,
        writable: true,
    },
    year: {
        get: function() {
            return this._year;
        },
        set: function() { ... }
    }
});
// 读取属性特性
Object.getOwnPrototypeDescriptor(obj, '_year');
// 读取所有属性特性
Object.getOwnPrototypeDescriptors(obj);
```

Object.preventExtensions(obj) 禁止扩展,禁止给对象添加属性和方法,原有的属性可修改
Object.isExtensible(obj) 检查是否可扩展
Object.seal() 密封对象,不可扩展、不可删除属性
Object.isSeal() 检查是否密封
Object.freeze() 冻结对象,不可扩展、不可删除、不可修改属性
Object.isFrozen() 检查是否冻结

相关文章

  • jQueryDom的操作(2)

    第二章 对jQuery对象的属性、特性以及数据的操作 操作元素的特性和属性值 元素的特性和属性 特性attribu...

  • 属性特性

  • js面向对象的理解

    属性理解 数据属性的4个特性configurable: 表示能否用delete删除属性,能否修改属性的其他特性,能...

  • jQuery--DOM操作(二)

    一、元素的特性、属性 特性 attributes vs 属性 properties attributes:值为 s...

  • jQuery--DOM操作(二)

    jQuery--DOM操作(二) 一、元素的特性、属性 特性 attributes vs 属性 propertie...

  • 对象属性特性

    1. 对象属性特性 对象由属性组成。属性创建时会带有一些特征值,用来描述属性。 根据对象属性特性,属性分两种——数...

  • iOS--property属性常用的关键字

    在开发中,我们iOS在定义属性的时候,需要在括号property()内说明该属性的特性,因为属性的特性决定了属性在...

  • iOS属性关键字

    在定义属性的时候,需要在括号()内说明该属性的特性(attribute)。属性的特性决定了属性在原子性、存取方法以...

  • 属性property介绍:3-属性关键字

    在定义属性的时候,需要在括号()内说明该属性的特性(attribute)。属性的特性决定了属性在原子性、存取方法以...

  • Javascript 面向对象(创建对象)

    创建对象 对象属性默认特性 四中数据属性特性 [[Configurable]] // 能否delete 默认tr...

网友评论

      本文标题:属性特性

      本文链接:https://www.haomeiwen.com/subject/sxtjhktx.html