浅谈Javascript数据属性与访问器属性


Posted in Javascript onJuly 26, 2016

ES5中对象的属性可以分为‘数据属性'和‘访问器属性'两种。

数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值。

数据属性特性:value、writable、enumerable、configurable。

解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

enumerable:true/false,是否可以通过for in循环返回,默认false;

writable:true/false,是否可以修改属性的值,默认false;

value:undefined,设置属性的值,默认undefined。

访问器属性特性:set、get、enumerable、configurable。

解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false;

enumerable:true/false,是否可以通过for in循环返回,默认false;

set:function,读取属性值时调用的函数;

get:function,修改属性值时调用的函数。

将属性添加到对象或修改现有属性的特性使用Object.defineProperty() 或 Object.defineproperties()方法;

Object.defineProperty(object, propertyname, descriptor):

参数解释:object:需要添加或修改属性的对象;

propertyname:属性的名称,字符串格式;

descriptor:属性的描述,设置数据属性或访问器属性的特性。

实例分析:

数据属性:

var emp = {

name:'tom'

};

 

Object.defineProperty(emp,'name',{

writable:false

});

emp.name = 'jery';
console.log(emp.name);//输出tom,因为已经设置了writable为false



Object.defineProperty(emp,'age',{

configurable:false,

writable:true,

value:22

});

console.log(emp.age);//输出22,因为设置了value为22

emp.age = 25;

console.log(emp.age);//输出25,设置了writable为true

delete emp.age;

console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了

访问器属性:

var emp ={

_name:'tom',

_age:20

};



Object.defineProperty(emp,'name',{

get:function(){

return this._name;

}

});

console.log(emp.name);//输出tom,由get方法返回_name的值

emp.name = 'jery';

console.log(emp.name);//输出tom,没有set方法,修改不了_name的值

 

Object.defineProperty(emp,'age',{

configurable:true,

get:function(){

 return this._age;

}

set:function(age){

this._age = age;

}

});

emp.age = 25;
console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来

delete emp.age;

console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除

 备注:访问器属性可以起到很好的保护作用,当只有get方法时,就实现只读不能写;反之,只有set时,便是只能写入而不能读取

以上就是小编为大家带来的浅谈Javascript数据属性与访问器属性全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
各种效果的jquery ui(接口)介绍
Sep 17 Javascript
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
Jun 23 Javascript
javascript对JSON数据排序的3个例子
Apr 12 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
JQuery解析XML的方法小结
Apr 02 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 Javascript
npm的lock机制解析
Jun 20 Javascript
js判断空对象的实例(超简单)
Jul 26 #Javascript
全面了解构造函数继承关键apply call
Jul 26 #Javascript
JS面试题---关于算法台阶的问题
Jul 26 #Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 #Javascript
jQuery仿京东商城楼梯式导航定位菜单
Jul 25 #Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 #Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 #Javascript
You might like
PHP XML备份Mysql数据库
2009/05/27 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Vue中$refs的用法详解
2018/06/24 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python实现比较文件内容异同
2018/06/22 Python
Python中存取文件的4种不同操作
2018/07/02 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python pyheatmap包绘制热力图
2018/11/09 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python实时监控logstash日志代码
2020/04/27 Python
关于Python解包知识点总结
2020/05/05 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
打架检讨书800字
2014/01/10 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
销售会议开幕词
2015/01/28 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python