一、访问器属性:

  1、Configurable:表示能否通过delete删除属性,从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。对于直接在对象上定义的属性,这个特性的默认值为true,表示可以使用delete删除该属性;对于使用Object.defineProperty方式定义的属性,这个特性默认值是false,表示不能使用delete删除该属性。

  举例:

var obj = {};
Object.defineProperty(obj,'name',{
value : '何莉莉'
});
obj.age='23'; delete obj.name;//返回值false,严格模式下会报错,属性不会被正常删除。
delete obj.age;//返回值true,属性可以被正常删除。

  2、Enumerable:表示能否通过for - in 循环返回属性。对于直接在对象上定义的属性,这个特性的默认值为true,表示可以使用for - in循环返回属性;对于使用Object.defineProperty方式定义的属性,这个特性的默认值为false,表示不能使用for - in 循环返回属性。

for(one in obj){
console.log(one+": "+obj[one]);
}
//结果中不包含使用Object.defineProperty定义的name属性结果
//age: 23

  3.get:在读取属性时调用的函数。默认值undefined。

  4.set:在写入属性时调用的函数。默认值undefined。

//下面以类似的双向绑定为例,表明给属性赋值时候,如何使用set和get方法。
var obj = {
temp : '',
array : [],
push : function(val){
this.temp = val;
}
}; Object.defineProperty(obj,'temp',{
set:function(val){
obj.array.push(val);
},
   get:function(){
     return obj.array;
   }
}); obj.push("亲");
obj.push("爱");
obj.push("的");
obj.push("你");
//结果
obj.array;//直接从对象中获取
obj.temp;//走get方法

二、定义多个属性

  ECMAScript5定义了一个Object.definPropertis()方法。利用此方法可以通过描述符一次定义多个属性。这个方法接受两个对象参数:第一个对象是添加和修改其属性的对象,第二个对象的属性与第一个对象中要添加或修改的属性一一对应。

例如:

var book = {};
Object.defineProperties(book,{
_year:{
writable : true,
value : 2004
},
edition:{
writable:true,
value:1
},
year:{
get:function(){
return this._year;
},
set:function(newValue){
if(newValue > 2004){
this._year = newValue;
this.edition += newValue - 2004;
}
}
} });
//结果:

三、读取属性的四个特性

var remote = Object.getOwnPropertyDescriptor(book,'_year');

for(var node in remote){

    console.log(node + ":" + remote[node]);

}

//结果

 
 

JavaScript的访问器的更多相关文章

  1. 24 JavaScript对象访问器&JavaScript对象构造器

    ES5引入了Getter和Setter Getter和Setter允许定义对象访问器 JavaScript Getter(get关键字):获取对象属性 <script> var perso ...

  2. JavaScript对象访问器属性

    对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> va ...

  3. JavaScript 数据属性和访问器属性

    在JavaScript中对象被定义为"无序属性的集合,其属性可以包含基本值.对象或函数."通俗点讲,我们可以把对象理解为一组一组的名值对,其中值可以是数据或函数. 创建自定义对象通 ...

  4. JavaScript 属性类型(数据属性和访问器属性)

    数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修 ...

  5. JavaScript中的Get和Set访问器

    今天要和大家分享的是JavaScript中的Get和Set访问器,和C#中的访问器非常相似. 标准的Get和Set访问器的实现   function Field(val){       this.va ...

  6. JavaScript ECAMScript5 新特性——get/set访问器

    之前对get/set的理解一直有误,觉得get set 是对象属性方法.看了别人的博客也有很多疑问,今天系统的做了很多测试终于弄明白了.(自己通过看书和写demo测试的,如有不对欢迎大家批评指正) g ...

  7. javascript对象属性——数据属性和访问器属性

    ECMA-262第五版在定义时,描述了属性property的各种特征,定义这些特性是为了实现javascript引擎用的,为了表示该特性是内部值,规范把它们放在了两对儿方括号中,例如[[Enumera ...

  8. JavaScript 属性类型(数据属性 访问器属性)

    ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把E ...

  9. JavaScript中的数据属性和访问器属性

    在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教 ...

随机推荐

  1. bash初始化文件详解

    目录 交互式(interactive)shell/非交互式(non-interactive)shell 如何启动一个交互式shell/非交互式shell 如何判断是否为交互式shell 登录式(log ...

  2. kafka在linux下安装

    简介 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据. 相关术语(参考百度百科) Broker Kafka集群包含一个或多个服务器,这种服务器被称为brok ...

  3. [题解]Codeforces Round #519 - B. Lost Array

    [题目] B. Lost Array [描述] Bajtek有一个数组x[0],x[1],...,x[k-1]但被搞丢了,但他知道另一个n+1长的数组a,有a[0]=0,对i=1,2,...,n.由此 ...

  4. EasyUI Datagrid 数据网格

    前端用easyUI开发时,官方给的文档指导太少,网上找的又很慢,因此,我总结了一个后台返回数据后,用easyUI生成表格的方法,可编辑可分页: 1 function paginationTable(i ...

  5. idea Transparent-native-to-ascii 是否需要勾选?

    目录 首先看一下官方对该选项的解释: 第一段是说标准的Java api是用ISO 8859-1编码.properties文件的,所以如果你在properties文件中可以使用转义序列表示没在这个编码中 ...

  6. 2020ICPC南京 M.Monster Hunter

    题目大意 一颗根为 \(1\) 的有 \((2≤≤2000)\) 个节点的树,每个节点有一个权值 \(ℎ_{} (1≤ℎ_{}≤10^9)\) ,能删除某个点的前提是其父亲节点已经被删除,并且删除一个 ...

  7. Objective-C 基础教程第五章,复合

    目录 Objective-C 基础教程第五章,复合 什么是复合? Car程序 自定义NSLog() 存取方法get Set Tires(轮胎) 存取方法 Car类代码的其他变化 扩展Car程序 复合还 ...

  8. WPS:多组件模式与整合模式的调节

    首页 设置中心 切换窗口管理模式 多组件和整合模式

  9. QT ——TCP接收到的数据出现乱码情况

    这个项目是写一个利用TCP来传输.bin的并文件,接收端是将接收到的.bin并文件直接在串口助手中进行读取. 但是从读取的结果来看发现传输过来得数据是错误的,与原数据不相符,由于服务端是直接对并文件在 ...

  10. k8s 中 nfs作为存储的三种方式

    1.安装nfs服务.直接给命令 yum install nfs-utils vim /etc/exports /data/k8s/ 172.16.1.0/24(sync,rw,no_root_squa ...