博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于defineProperty的一点理解
阅读量:6275 次
发布时间:2019-06-22

本文共 877 字,大约阅读时间需要 2 分钟。

之前有了解过vue的双向绑定,就是通过defineProperty来实现的。现在我们稍微重新巩固一下。

var data = {

   name:"lxy"

},  
 data2 = {};

Object.defineProperty(data,'name',{    //defineProperty可以接受三个参数 第一个目标对象,第二个目标键,第三个将被定义或修改的属性的描述符。

  set: function (){       //可以接受一个参数就是新的值

    console.log("data.name的值发生改变了!");

  },

  get: function (){

    console.log("正在读取data.name的值!");

  }

})

data.name     //正在读取data.name的值!     undefined(这是不是说明使用这个方法之后对象被重置了?还在研究...)

data.name = 1  //data.name的值发生改变了!

Object.defineProperty( data2,'name',{ 

  value: 2 ,  //赋值操作

       //类似的操作还有:

       // configurable当且仅当该属性的 configurable 为 true 时,该属性描述符才能够被改变,也能够被删除。默认为 false。

      //enumerable当且仅当该属性的 enumerable 为 true 时,该属性才能够出现在对象的枚举属性中。默认为 false。

      //数据描述符同时具有以下可选键值:value该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined。这也就是为什么writable 当且仅当该属性的 writable 为 true 时,该属性才能被赋值运算符改变。默认为 false。

})

 

转载于:https://www.cnblogs.com/xyyyy/p/8776647.html

你可能感兴趣的文章
MongoDB与Java 经典面试题、课程,好资源值得收藏
查看>>
标普全球获准进入中国市场,本土评级机构压力山大!
查看>>
阿里云基础产品技术月刊 2019年1月
查看>>
Go 语言的垃圾回收演化历程:垃圾回收和运行时问题
查看>>
苹果收购硅谷创业公司 Silk Labs,将继续布局 AI 和 IoT
查看>>
Idea开发Tomcat应用的热部署配置
查看>>
docker安装mysql
查看>>
GNOME 3.34 发布计划敲定,正式版将于9月11日推出
查看>>
使用Data Lake Analytics快速分析OSS上的日志文件
查看>>
《图解服务器端网络架构》笔记
查看>>
《叶问》第2期
查看>>
各业务Object概念(VO、 PO、DO、DTO、 BO、 QO、DAO、POJO)
查看>>
JavaScript对象继承方式
查看>>
Java 11中的新功能和API详解系列1
查看>>
网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
查看>>
第三章 导数与微分
查看>>
WPF编游戏系列 之二 图标效果
查看>>
设计模式-里氏替换原则
查看>>
react-native调试
查看>>
基于Excel2013的合并计算
查看>>