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 相关文章推荐
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
Javascript 命名空间模式
Nov 01 Javascript
javascript中文本框中输入法切换的问题
Dec 10 Javascript
jQuery 处理页面的事件详解
Jan 20 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 Javascript
jQuery组件easyui对话框实现代码
Aug 25 Javascript
解析js如何获取css样式
Dec 11 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 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自动跳转中英文页面
2008/07/29 PHP
php生成xml简单实例代码
2009/12/16 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
php自动加载方式集合
2016/04/04 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
vue实现文字加密功能
2019/09/27 Javascript
ant design实现圈选功能
2019/12/17 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
球队口号
2014/06/18 职场文书
师范生见习报告
2014/10/31 职场文书
学前班语言教学计划
2015/01/20 职场文书
年会主持人开场白台词
2015/05/29 职场文书
国家助学金受助感言
2015/08/01 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Redis三种集群模式详解
2021/10/05 Redis
进行数据处理的6个 Python 代码块分享
2022/04/06 Python