博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存取器描述
阅读量:6836 次
发布时间:2019-06-26

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

当使用存取器描述属性的特性的时候,允许设置以下特性属性:

1 var obj = {};2 Object.defineProperty(obj,"newKey",{3     get:function (){} | undefined,4     set:function (value){} | undefined5     configurable: true | false6     enumerable: true | false7 });

注意:当使用了getter或setter方法,不允许使用writable和value这两个属性

getter/setter

当设置或获取对象的某个属性的值的时候,可以提供getter/setter方法。

  • getter 是一种获得属性值的方法

  • setter是一种设置属性值的方法。

在特性中使用get/set属性来定义对应的方法。

1 var obj = {}; 2 var initValue = 'hello'; 3 Object.defineProperty(obj,"newKey",{ 4     get:function (){ 5         //当获取值的时候触发的函数 6         return initValue;     7     }, 8     set:function (value){ 9         //当设置值的时候触发的函数,设置的新值通过参数value拿到10         initValue = value;11     }12 });13 //获取值14 console.log( obj.newKey );  //hello15 16 //设置值17 obj.newKey = 'change value';18 19 console.log( obj.newKey ); //change value

又如:

1  object.defineProperty (this,'price',{ 2             get:function(){return price*0.9}, 3             set:function(value){ 4                 if(value>10000) 5                 { 6                     alert('产品价格必须在0--1万之间'); 7                 }else{ 8                     price=value; 9                 }10             }11         })

 

注意:get或set不是必须成对出现,任写其一就可以。如果不设置方法,则get和set的默认值为undefined

configurable和enumerable同上面的用法。

兼容性

在ie8下只能在DOM对象上使用,尝试在原生的对象使用 Object.defineProperty()会报错。

转载地址:http://ihqkl.baihongyu.com/

你可能感兴趣的文章
Oracle锁表 行级锁 表级锁 行级锁
查看>>
Linux下如何把时间转成秒数,或把秒数转换成标准时间
查看>>
操作系统---Systemd
查看>>
JS中定义式函数与变量时函数的差别
查看>>
JSON字符串的解析
查看>>
LDAP之LDAP服务器搭建
查看>>
vmware redhat5.4 磁盘阵列 RIDA
查看>>
python学习--DAY2
查看>>
mysql5.6创建用户并授予指定数据库或表权限
查看>>
sql的使用详解(针对oeacle)之select(上)
查看>>
在CentOS/RHEL 7.X安装 EPEL repo 的方法
查看>>
oracle安装文档
查看>>
AD域中NTP服务器的配置
查看>>
我的友情链接
查看>>
SylixOS DSP upgrade命令解析
查看>>
数据字典是什么 干什么的 !!
查看>>
“火柴棍式”程序员面试题
查看>>
MySql层级树查询
查看>>
java 语言中System.getProperty("user.dir")
查看>>
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
查看>>