浅谈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操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
用node.js写一个jenkins发版脚本
May 21 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 15 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与已存在的Java应用程序集成
2006/10/09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
PHP新手入门学习方法
2011/05/08 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
详解php反序列化
2020/06/10 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
django model去掉unique_together报错的解决方案
2016/10/18 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python实现吃苹果小游戏
2020/03/21 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
关键字final的用法
2013/10/02 面试题
外贸英语专业求职信范文
2013/12/25 职场文书
党支部书记先进事迹
2014/01/17 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
职称评定自我鉴定
2014/03/18 职场文书
初中教师业务学习材料
2014/05/12 职场文书
对照检查剖析材料
2014/09/30 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
Python 文字识别
2022/05/11 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android