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 this 和 $(this) 的区别
Aug 23 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
浅谈Vue.js
Mar 02 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
Jul 21 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 Javascript
vue实现的封装全局filter并统一管理操作示例
Feb 02 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抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
使用PHP开发留言板功能
2019/11/19 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
js中开关变量使用实例
2017/02/24 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python的argparse库使用详解
2018/10/09 Python
详解python算法之冒泡排序
2019/03/05 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python实例化对象的具体方法
2020/06/17 Python
创建学习型党组织实施方案
2014/03/29 职场文书
教师节活动主持词
2014/04/02 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
责任书格式
2015/01/29 职场文书
红旗渠导游词
2015/02/09 职场文书
单位接收证明格式
2015/06/18 职场文书
边城读书笔记
2015/06/29 职场文书