美文网首页JavaScript
对象方法--Object.defineProperty

对象方法--Object.defineProperty

作者: 开着五菱宏光的小白 | 来源:发表于2020-05-14 15:01 被阅读0次

Object.define Property(obj, prop, descriptor)

参数类型

· obj 要定义属性的对象。
· prop 要定义或修改的属性的名称或 Symbol 。
· descriptor 要定义或修改的属性描述符。

descriptor

· value 该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数)等
· writable 当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符改变 默认为false
· Enumerable 当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。默认为 false。
· Configurable 当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。

定义方式

const object1 = {};

    Object.defineProperty(object1, 'property1', {
        value: 42,
        writable: false
    });

    object1.property1 = 77;
    console.log(object1);

writable值为false时,不可修改
const object1 = {};

    Object.defineProperty(object1, 'property1', {
        value: 42,
        writable: true
    });

    object1.property1 = 77;
    console.log(object1);

writable值为true时,可修改
    const object1 = {};

    Object.defineProperty(object1, 'property1', {
        value: 42,
        writable: true,
        enumerable: true
    });
    for (var i in object1) {
        console.log(i)
        console.log(object1[i])
    }

enumerable为true时,对象对应的属性可被枚举
    const object1 = {};

    Object.defineProperty(object1, 'property1', {
        value: 42,
        writable: true,
        enumerable: false
    });
    for (var i in object1) {
        console.log(i)
        console.log(object1[i])
    }
    console.log(object1)
enumerable为false时,对象对应的属性不可被枚举
const object1 = {};

Object.defineProperty(object1, 'property1', {
      value: 42,
      writable: true,
      enumerable: false,
      configurable: true
});
delete object1['property1'];
console.log(object1)
image.png
const object1 = {};

Object.defineProperty(object1, 'property1', {
     value: 42,
     writable: true,
     enumerable: false,
     configurable: false
 });
 delete object1['property1'];
 console.log(object1)
image.png

相关文章

网友评论

    本文标题:对象方法--Object.defineProperty

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