浅谈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 相关文章推荐
javascript类继承机制的原理分析
Sep 12 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
Aug 17 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
浅谈jquery.fn.extend与jquery.extend区别
Jul 13 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
信息滚动效果的实例讲解
Sep 18 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 01 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python中特殊函数集锦
2015/07/27 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python文件的md5加密方法
2016/04/06 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
英文自我鉴定
2013/12/10 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
认错检讨书
2014/10/02 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
公务员个人总结
2015/02/12 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL