Object(对象)中的属性

编程入门 行业动态 更新时间:2024-10-24 18:18:39

Object(对象)中的<a href=https://www.elefans.com/category/jswz/34/1771415.html style=属性"/>

Object(对象)中的属性

对象中的属性

一、数据属性(数据描述符)

(1)**configurable:**表示能否通过delete删除此属性,能否修改属性的特性,或能否修改把属性修改为访问器属性,如果直接使用字面量定义对象,默认值为true。
(2)**enumerable:**表示该属性是否可枚举,即是否通过for-in循环或Object.keys()返回属性,如果直接使用字面量定义对象,默认值为true。
(3)**writable:**能否修改属性的值,如果直接使用字面量定义对象,默认值为true。
(4)**value:**该属性对应的值,默认为undefined。

二、访问器属性(存取描述符)

(1)**configurable:**和数据属性的[[Configurable]]一样,表示能否通过delete删除此属性,能否修改属性的特性,或能否修改把属性修改为访问器属性,如果直接使用字面量定义对象,默认值为true
(2)**enumerable:**和数据属性的[[Configurable]]一样,表示该属性是否可枚举,即是否通过for-in循环或Object.keys()返回属性,如果直接使用字面量定义对象,默认值为true
(3)**get:**一个给属性提供 getter 的方法(访问对象属性时调用的函数,返回值就是当前属性的值),如果没有 getter 则为 undefined。该方法返回值被用作属性值。默认为 undefined
(4)**set:**一个给属性提供 setter 的方法(给对象属性设置值时调用的函数),如果没有 setter 则为 undefined。该方法将接受唯一参数,并将该参数的新值分配给该属性。默认为 undefined。

在对象中添加存取描述符属性
// 定义一个对象obj
let obj = {}
// 定义一个变量a
let a = 1;
// 定义一个变量b
let b;
//为obj对象设置一个m属性
Object.defineProperty(obj, 'm', {configurable: true,enumerable: true,//添加存取属性,当读取属性值时,调用get方法get: function() {return a + 1;},//当设置属性时,调用set方法set: function(i) {a = i + 2;b = i + 1;}
})
console.log(obj.m); //调用属性的get方法,结果为2
//为属性从新设置一个值,此时会调用set方法
obj.m = 4; //参数i的值就是4
console.log(a); //打印结果为6,a=i+2;i的值是4,所以a=6
console.log(b); //打印结果为5,b=i+1;i的值是4,所以b=5

注意:
1.getter和setter可以不同时使用,但在严格模式下只其中一个,会抛出错误
2.数据描述符与存取描述符不可混用,会抛出错误

value不能和get和set同时使用。如下:

let obj = {}
let a = 1;
let b ;
Object.defineProperty(obj, 'm', {value:'123',//切记不能使用value和get,set同时使用,会报错get: function() {return a;},set: function(i) {b = i + 1;}
})
set是给属性赋值,get是取属性的值,get是得到 一般是要返回的 set 是设置 不用返回
// 定义一个函数person
function person() {// 定义一个变量age,值为18let age = 18;// 为当前函数定义一个personAge属性Object.defineProperty(this, "personAge", {//为其设置一个get访问器,当读取该属性时调用getget: function() {return age - 10;},//为其设置一个set访问器,当更新该属性时调用setset: function(v) {age = v;}})
}
//实例化person对象
let p = new person();
//读取personAge的值,此时会调用get中的方法
console.log(p.personAge); // 8
//重新为属性personAge设置一个值,此时会调用set中的方法
p.personAge = 1994;
console.log(p.personAge); //1984

有兴趣可以了解下对象的方法

更多推荐

Object(对象)中的属性

本文发布于:2023-06-25 21:55:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/884930.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   对象   Object

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!