zoukankan      html  css  js  c++  java
  • Object.defineProperty方法总结

    1. 定义属性的两种形式

    //1
    var obj = {};
    obj.name = 'ming';
    
    //相当于
    Object.defineProperty(obj,'name',{
        value : 'ming',
        writable: true,
        configurable: true,
        enumerable: true
    })
    
    //2
    Object.defineProperty(obj,'name',{value: 'ming'})
    
    //相当于
    Object.defineProperty(obj,'name',{
        value: 'ming',
        writable: false,
        configurable: false,
        enumerable: false
    })

    2. defineProperty描述符

    2.1 value 属性值
    2.2 writable 是否可以修改
    2.3 configurable 是否可配置,是否可删除

    1. 是否可配置

    Object.defineProperty(obj,'name',{configurable:false})
    
    //再次配置描述符中的任何一个,包括value,都会报错
    Object.defineProperty(obj,'name',{...}) //Cannot redefine property: name

    2. 是否可删除

    Object.defineProperty(obj,'name',{configurable:false})
    
    delete obj.name //返回false

    2.4 enumerable  是否可枚举

    是否可以在 for...in 或 Object.keys() 中遍历

    3. 设置只读属性

    Object.defineProperty(obj,'name',{writable:false})
    
    //只是设置writable为false,当configurable为true,同样可以通过
    Object.defineProperty(obj,'name',{value:'xxx'})修改值
    
    //只读设置应该是
    Object.defineProperty(obj,'name',{writable:false,configurable:false})
  • 相关阅读:
    随笔
    梨花落(短篇小说)
    javascript中的apply,call,bind详解
    js中this的指向问题
    你若安好,便是晴天
    gulp
    图标
    normalize.css
    git bash和toritoise客户端结合使用
    云计算基础知识
  • 原文地址:https://www.cnblogs.com/mengff/p/12812293.html
Copyright © 2011-2022 走看看