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 相关文章推荐
向当前style sheet中插入一个新的style实现方法
Apr 01 Javascript
jQuery的缓存机制浅析
Jun 07 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
JavaScript学习笔记--常用的互动方法
Dec 07 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
详解Vue2 添加对scss的支持
Jan 02 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 Javascript
JS实现拖动模糊框特效
Aug 25 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
vuejs如何配置less
2017/04/25 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
python中的对数log函数表示及用法
2020/12/09 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
领导工作表现评语
2015/01/04 职场文书
2015年环境监察工作总结
2015/07/23 职场文书