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 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
ie focus bug 解决方法
Sep 03 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
Feb 12 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
Mar 01 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
javascript求日期差的方法
Mar 02 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 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里8个鲜为人知的安全函数分析
2014/12/09 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python创建日历实例
2014/08/21 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
python操作mysql数据库
2017/03/05 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python中np是做什么的
2020/07/21 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
python常量折叠基础知识点讲解
2021/02/28 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
电子银行营销方案
2014/02/22 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
房屋所有权证明
2015/06/19 职场文书