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 相关文章推荐
jQuery使用CSS()方法给指定元素同时设置多个样式
Mar 26 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
Web程序员必备的7个JavaScript函数
Jun 14 Javascript
如何实现星星评价(jquery.raty.js插件)
Dec 21 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
在Angular项目使用socket.io实现通信的方法
Jan 05 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
PHP4在Windows2000下的安装
2006/10/09 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
vuex实现购物车功能
2020/06/28 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
python之yield表达式学习
2014/09/02 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
施工人员岗位职责
2013/12/12 职场文书
超市活动计划书
2014/04/24 职场文书
难忘的一天教学反思
2014/04/30 职场文书
读群众路线的心得体会
2014/09/03 职场文书
2014年医院工作总结
2014/11/20 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
学术会议通知范文
2015/04/15 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
儿童诗两首教学反思
2016/02/23 职场文书