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中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
js实现二级导航功能
Mar 03 Javascript
老生常谈angularjs中的$state.go
Apr 24 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
微信小程序调用后台service教程详解
Nov 06 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
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
NOT NULL 和NULL
2007/01/15 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JS hashMap实例详解
2016/05/26 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
Python3中的json模块使用详解
2018/05/05 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
python正则表达式实例代码
2020/03/03 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
如何使用python写截屏小工具
2020/09/29 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
安全检查管理制度
2014/02/02 职场文书
原材料检验岗位职责
2014/03/15 职场文书
计划生育个人总结
2015/03/02 职场文书
父亲去世追悼词
2015/06/23 职场文书
Python图像处理之图像拼接
2021/04/28 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技