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中通过URL传递汉字的方法
Apr 09 Javascript
Javascript注入技巧
Jun 22 Javascript
js二维数组定义和初始化的三种方法总结
Mar 03 Javascript
初识Node.js
Sep 03 Javascript
深入理解javascript作用域和闭包
Sep 23 Javascript
JavaScript中的Math.LN2属性用法详解
Jun 12 Javascript
jQuery 如何给Carousel插件添加新的功能
Apr 18 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
Jan 19 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
小程序云开发部署攻略(图文教程)
Oct 30 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
JS函数本身的作用域实例分析
Mar 16 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
phpfpm的作用和用法
2019/10/10 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
js控制frameSet示例
2013/09/10 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
layui table 参数设置方法
2018/08/14 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python自定义类并使用的方法
2015/05/07 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
利用python画出折线图
2018/07/26 Python
python实现简易数码时钟
2021/02/19 Python
python3.6实现学生信息管理系统
2019/02/21 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
学生请假条格式
2014/04/11 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2014年管理工作总结
2014/11/22 职场文书
给老婆道歉的话
2015/01/20 职场文书
告知书格式
2015/07/01 职场文书