JavaScript笔记之数据属性和存储器属性


Posted in Javascript onMarch 31, 2016

在javascript中,对象的属性分为数据属性和存储器属性两种:

两种属性的区别

我们使用Object.defineProperty()先来直观的感受一下这两者的不同。

使用Object.defineProperty()对数据属性进行设置的方法如下

var obj = {};
Object.defineProperty(obj, "prop", {
value: 1,
writable: true, //可写性
enumerable: true, //可枚举性
configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改
})

使用Object.defineProperty()对存储器属性的设置方法如下

var obj = {};
Object.defineProperty(obj, "prop", {
get
set
enumerable: true, //可枚举性
configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改
})

从上面的例子中,我们观察到存储器属性并没有value和writable两个属性,取而代之的是set和get属性。

存储器属性

看完了数据属性和存储器属性直观上的差异,我们详细看一看存储器属性这个容易会被忽视(说的就是我TT)的属性。

存储器属性与数据属性最大的不同就是增加了getter/setter,通过它们可以对属性的值进行操作,可以实现一些实用的功能。

//example1
function serialnum() {
var n =1; 
var prop = null;
Object.defineProperty(this, "n", {
get: function() {
return n;
},
set: function(value) {
if(value > n) n = value;
else throw '请输入一个大于n的值';
}
})
}
var obj = new serialnum();
obj.n = 2;
//2
obj.n = 0;
//Uncaught 请输入一个大于n的值

上面的例子中,使用set函数对n的取值范围进行控制。

关于js数据属性存储属性小编就给大家介绍到这里,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 表单验证常见正则
Sep 28 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
详解vue中使用express+fetch获取本地json文件
Oct 10 Javascript
微信小程序全局变量功能与用法详解
Jan 22 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
Apr 17 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
Mar 31 #Javascript
基于JQuery打造无缝滚动新闻步骤详解
Mar 31 #Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
Mar 31 #Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 #Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 #Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 #Javascript
JS判断元素是否在数组内的实现代码
Mar 30 #Javascript
You might like
php微信支付之公众号支付功能
2018/05/30 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
javascript白色简洁计算器
2015/05/04 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
利用Python计算KS的实例详解
2020/03/03 Python
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
大学生思想汇报范文
2013/12/31 职场文书
黄金酒广告词
2014/03/21 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
大学学风建设方案
2014/05/04 职场文书
建议书格式
2015/02/04 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
公务员处分决定书
2015/06/25 职场文书
世界名著读书笔记
2015/06/25 职场文书
员工担保书范本
2015/09/22 职场文书
python flappy bird小游戏分步实现流程
2022/02/15 Python
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技
介绍一下28个JS常用数组方法
2022/05/06 Javascript