经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
对象及defineProperty 方法
来源:cnblogs  作者:夏雨下雨夏  时间:2022/1/17 11:05:23  对本文有异议

数据属性

  1. configurable
    • 属性是否可以通过 delete 删除并重新定义
    • 是否可以修改他的特性(属性是否可以被配置)
    • 是否可以把它改为访问器属性
    • 默认 true
  2. enumerable 属性是否可以通过 for-in 循环返回 默认true
  3. writable 属性值是否可以被修改 默认 true
  4. value 属性的实际值
  5. 在属性被定义为不可配置之后,就不能再修改除了writable之后的值了!!!!

访问器属性

  1. configurable
  2. enumerable
  3. get 读取该属性时调用 get 并返回结果
  4. set (newvalue) 修改该属性时会将修改的值传入 set

对象方法

  1. Object.defineProperty 定义单个属性

    1. // 使用这种方法不定义 configurable enumerable writable时,会默认为false
    2. Object.defineProperty(obj,key,{
    3. configurable:true,
    4. enumerable:true,
    5. writable:true,
    6. value:"value"
    7. })
    8. // getter 和 setter 的使用
    9. Object.defineProperty(obj,key,{
    10. // get会在该属性被读取时调用
    11. get(){
    12. return this.key
    13. },
    14. // set 会在该属性被修改时调用
    15. set(newValue){
    16. this.key = newValue
    17. }
    18. })
  2. Object.defineProperties 定义多个属性

    1. let book = {}
    2. // 使用这种方法不定义 configurable enumerable writable时,会默认为false
    3. Object.defineProperties(book,{
    4. edition:{
    5. value:1,
    6. writable:true
    7. },
    8. year_:{
    9. value:2017
    10. },
    11. year:{
    12. get(){
    13. return this.year_
    14. },
    15. set(newValue){
    16. if(newValue > 2017){
    17. this.year_ = newValue;
    18. this.edition += (newValue - 2017)
    19. console.log(this.edition);
    20. }
    21. }
    22. }
    23. })

原文链接:http://www.cnblogs.com/xiayuxiayuxia/p/15770283.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号