浅谈Javascript数据属性与访问器属性
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中对象被定义为"无序属性的集合,其属性可以包含基本值.对象或函数."通俗点讲,我们可以把对象理解为一组一组的名值对,其中值可以是数据或函数. 创建自定义对象通 ...
- JavaScript数据属性与访问器属性
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...
- JavaScript | 数据属性与访问器属性
属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) tr ...
- javascript数据属性和访问器属性
var book={ _year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ retu ...
- JavaScript 属性类型(数据属性和访问器属性)
数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修 ...
- javascript对象属性——数据属性和访问器属性
ECMA-262第五版在定义时,描述了属性property的各种特征,定义这些特性是为了实现javascript引擎用的,为了表示该特性是内部值,规范把它们放在了两对儿方括号中,例如[[Enumera ...
- JavaScript中的数据属性和访问器属性
在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教 ...
- Js中的数据属性和访问器属性
Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...
- js中属性类型:数据属性与访问器属性
js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描 ...
随机推荐
- React-native 环境配置及项目创建
https://reactnative.cn/docs/next/getting-started.html 看到 安装 Android Studio 安装 Android Studio http:/ ...
- Springboot 使用Jedis
Springboot 使用Jedis 依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...
- LU分解法求逆矩阵 C语言实现
最近在网上找了下,没有找到我想要的C语言版本,找到的也是错误的.故自己写了一个,并进行了相关测试,贴出来分享. 具体的LU分解算法就不细说了,随便找本书就知道了,关键是分解的处理流程,细节特别容易出错 ...
- Spark-PySpark sql各种内置函数
_functions = { 'lit': 'Creates a :class:`Column` of literal value.', 'col': 'Returns a :class:`Colum ...
- git远程相关
git remote add origin git仓库地址 // 添加了远程仓库 git remote remove origin // 移除远程仓库 git push -u origin maste ...
- Unity3D_(游戏)卡牌02_主菜单界面
启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面 传送门 主菜单界面 (选择左边图标或选 ...
- nodejs 中的 cookie 及 session
cookie-parser 插件:cookie解析,加密的操作 cookie-session 插件:session 的解析操作 http 是无状态的 cookie:在浏览器保存一些数据,每次向服务器发 ...
- 一、基础篇--1.1Java基础-hashCode和equals方法的区别和联系
hashCode和equals方法的区别和联系 两个方法的定义 equals(Object obj)方法用来判断两个对象是否"相同",如果"相同"则返回tr ...
- vue-微信浏览器左上角返回按钮拦截
[需求] 在微信公众号开发中,有时需要对浏览器左上角返回按钮进行拦截处理相关的页面逻辑,而并不是让页面直接返回上一页,之前在这个细节点上的一直实现得不是很好.但看到京东购物公众号上的效果却实现得非常好 ...
- 12个Sublime Text应用技巧[转载]
本文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text选择文本的快捷键 ...