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 相关文章推荐
$.ajax返回的JSON无法执行success的解决方法
Sep 09 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
js函数的延迟加载实现代码
Oct 11 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
jQuery解析json格式数据简单实例
Jan 22 Javascript
js canvas实现擦除动画
Jul 16 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
vue自定义指令实现方法详解
Feb 11 Javascript
js控制随机数生成概率代码实例
Mar 21 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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服务器页面间跳转实现方法
2012/08/02 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
python之yield表达式学习
2014/09/02 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python opencv读mp4视频的实例
2018/12/07 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python 追踪except信息方式
2020/04/25 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
怎样创建、运行java程序
2014/08/01 面试题
工程项目经理岗位职责
2013/12/15 职场文书
十八大感想感言
2014/02/10 职场文书
高中运动会入场词
2014/02/14 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
影视后期实训报告
2014/11/05 职场文书
党员理论学习心得体会
2016/01/21 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书