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 相关文章推荐
Mootools 1.2教程 Tooltips
Sep 15 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
JSONP跨域的原理解析及其实现介绍
Mar 22 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
JavaScript一元正号运算符示例代码
Jun 30 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
Sep 26 Javascript
深度解读vue-resize的具体用法
Jul 08 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
Feb 08 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
Thinkphp多文件上传实现方法
2014/10/31 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
潜说js对象和数组
2011/05/25 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
创先争优制度
2014/01/21 职场文书
致接力运动员广播稿
2014/02/17 职场文书
交通事故协议书
2014/04/15 职场文书
二年级小学生评语
2014/04/21 职场文书
企业法人代表证明书
2014/09/27 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
LeetCode189轮转数组python示例
2022/08/05 Python