JavaScript对象

JavaScript对象

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

javascript 对象

1、数据属性:

[[Configurable]] 表示是否能通过delete删除属性从而又一次定义属性,是否能改动属性的特性,或者是否能把属性改动为訪问器属性。直接在对象上定义的属性,它们的默认值为true

[[Enumberable]] 表示是否能通过for-in 循环返回属性。直接在对象上定义的属性,它们的这个特性默认值为true

[[Writable]] 表示是否能改动属性的值。直接在对象上定义的属性,他们的这个特性默认值为true

[[Value]] 包括这个属性的数据值。 读取属性值的时候,从这个位置读; 写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined

var person={};

Object.defineProperty(person, “name”, {


writable: false,


value: “Bruce”

});

alert(person.name);  //Bruce

person.name = “Bao”;

alert(person.name);  //Bruce

这个样例创建一个名为name的属性,它的值”Bruce”是仅仅读的。这个属性的值是不可改动的,假设尝试为它指定新值,则在非严格模式下,赋值操作将会导致抛出错误。

类似的规则也适用于不可配置的属性。比如:

var person = {};

Object.defineProperty(person, “name”, {


configurable:false,


value: “Bruce”

})

alert(person.name);   //Bruce

delete person.name;

alert(person.name);   //Bruce

把configurable 设置为false, 表示不能从对象中删除属性。假设对这个属性进行调用delete, 则在非严格模式下什么也不会发生,而在严格模式下会导致错误。并且,一旦把属性定义为不可配置的,就不能再把它变回可配置了。此时,再调用Object.defineProperty()方法改动除writable之外的特性,都会导致错误:

var person = ();

Object.defineProperty(person, “name”,{


configurable: false,


value: “Bruce”

});

//抛出错误

Object.defineProperty(person, “name”, {


configurable: true,


value: “Bruce”

});

也就是说能够多次调用Object.defineProperty()方法改动允许属性,但在把configurable特性设置为false之后就会有限制了。

在调用Object.defineProperty()方法时,假设不指定,configurable、enumberable、和writable特性默认值都是false。多数情况下,可能没有必要利用Object.defineProperty()方法提供这些高级功能。只是,理解这些概念对理解JavaScript对象却很实用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118902.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号