首页 > 其他 > 详细

Object.defineProperty 笔记

时间:2018-05-25 18:27:28      阅读:184      评论:0      收藏:0      [点我收藏+]
 var a= {}
    Object.defineProperty(a,"b",{
      value:123
    })
    console.log(a.b);//123
Object.defineProperty有三个参数

一个参数:目标对象

第二个参数:需要定义的属性或方法的名字。

第三个参数:目标属性所拥有的特性。(descriptor)

descriptor

他又以下取值,

value:属性的值

writable:如果为false,属性的值就不能被重写,只能为只读了

configurable:总开关,一旦为false,就不能再设置他的(value,writable,configurable)

enumerable:是否能在for...in循环中遍历出来或在Object.keys中列举出来。

get:获取值

set:设置值

当我们只设置了 value,别的并没有设置,但是 第一次的时候可以简单的理解为(暂时这样理解)它会默认帮我们把writable,configurable,enumerable。都设上值,而且值还都是false,下面你再想设置,就会报错

想用(get 和 set),就不能用(wriable 或 value中的任何一个)
var a= {}
Object.defineProperty(a,"b",{
  set:function(newValue){
    console.log("你要赋值给我,我的新值是"+newValue)
    },
  get:function(){
    console.log("你取我的值")
    return 2 //注意这里,我硬编码返回2
   }
})
a.b =1 //打印 你要赋值给我,我的新值是1
console.log(a.b)    //打印 你取我的值
                    //打印 2    注意这里,和我的硬编码相同的
 

Object.defineProperty 笔记

原文:https://www.cnblogs.com/chengyuanblog/p/9089897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!