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 相关文章推荐
JS 表单验证大全
Nov 23 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
May 30 Javascript
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 Javascript
简易js代码实现计算器操作
Apr 15 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
Webpack框架核心概念(知识点整理)
Dec 22 Javascript
vue中子组件调用兄弟组件方法
Jul 06 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 Javascript
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
原生Javascript+HTML5一步步实现拖拽排序
Jun 12 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
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python字典基本操作实例分析
2015/07/11 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
python 代码运行时间获取方式详解
2020/09/18 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
《春笋》教学反思
2014/04/15 职场文书
健康家庭事迹材料
2014/05/02 职场文书
初三新学期计划书
2014/05/03 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
二年级学生期末评语
2014/12/26 职场文书
滴水洞导游词
2015/02/10 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
Python 统计序列中元素的出现频度
2022/04/26 Python
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP