浅谈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 动态调整图片尺寸实现代码
Dec 28 Javascript
dojo随手记 gird组件引用
Feb 24 Javascript
jQuery选择器全面总结
Jan 06 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 Javascript
动态加载js的方法汇总
Feb 13 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
JavaScript中的原始值和复杂值
Jan 07 Javascript
Vue 仿QQ左滑删除组件功能
Mar 12 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
vue实现顶部菜单栏
Nov 08 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中实现Javascript的escape()函数代码
2010/08/08 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
js实现无限瀑布流实例方法
2019/09/16 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python selenium文件上传方法汇总
2020/11/19 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
历史学专业推荐信
2013/11/06 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
电子商务实训报告总结
2014/11/05 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电