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 相关文章推荐
改写一个简单的菜单 弹性大小
Dec 02 Javascript
jquery提升性能最佳实践小结
Dec 06 Javascript
jsTree 基于JQuery的排序节点 Bug
Jul 26 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
May 24 Javascript
浅谈键盘上回车按钮的js触发事件
Feb 13 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
ES6正则表达式扩展笔记
Jul 25 Javascript
浅谈vue.js导入css库(elementUi)的方法
Mar 09 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
Mar 05 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 Javascript
小程序实现列表倒计时功能
Jan 29 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中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
初探nodeJS
2017/01/24 NodeJs
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
python的unittest测试类代码实例
2017/12/07 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python模块的加载讲解
2019/01/15 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
会计专业自荐信范文
2013/12/02 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
培训讲师邀请函
2014/01/10 职场文书
食品安全责任书
2014/04/15 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
河童之夏观后感
2015/06/11 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers