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对象却很实用。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【MySQL笔记】正确的理解MySQL的MVCC及实现原理

    【MySQL笔记】正确的理解MySQL的MVCC及实现原理MVCC多版本并发控制前提概要MVCC实现原理MVCC相关问题前提概要什么是MVCC?MVCCMVCC,全称Multi-VersionConcurrencyControl,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQLInnoDB中的实现主要是为了提高数据库并发性能…

    2022年4月30日
    54
  • gemtuzumab ozogamicin_gazopa识图

    gemtuzumab ozogamicin_gazopa识图原文链接:http://www.sohu.com/a/306325058_671230纵观数据中心业界,底层技术方面其实正处在一场架构变革的初始点,这场变革就是I/O总线的网络化以及I/O资源的大规模池化。众所周知,在开放平台下,PCIE是目前高性能I/O设备普遍采用的总线类型,目前已经到Gen4,很快会到Gen5。但是PCIE总线的树形拓扑以及有限的设备标识ID号码范围,导致其无法形成一个大规模网络,这个问题在NVMe盘未普及之前显得不那么是个问题,但是NVMe盘得道广泛应用之后,会占用大量的PCIE

    2025年6月24日
    3
  • discuz php接口文档,Discuz二次开发手册.doc[通俗易懂]

    discuz php接口文档,Discuz二次开发手册.doc[通俗易懂]Discuz二次开发手册Discuz文件说明,有助于discuz爱好者,进行自己的开发,在这里提供方便admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制。ajax.php——论坛模板的ajax判断及数据返回都在这里进行attachment.php——附件文件,仅仅处理附件下载的功能。announcement.php——论坛公告的显示,一般很少改con…

    2022年5月19日
    41
  • Centos6.5镜像下载[通俗易懂]

    Centos6.5镜像下载[通俗易懂]CentOS6.5系统安装1、首先打开网易开源镜像站:http://mirrors.163.com/当然,大家也可以使用阿里开源镜像站:http://mirrors.aliyun.com/2、点击进入centos目录。3、因为我们选择安装centos6.5版本系统,所以点击进入6.5/目录4、我们打开里面的readme文件,找到下载地址:http://va…

    2022年4月30日
    263
  • 《Python 快速入门》C站最全Python标准库总结

    《Python 快速入门》C站最全Python标准库总结❤粉丝福利:免费下载海量【PPT模板、简历模板、学习资料】

    2022年5月11日
    42
  • 关于 IPv6 你需要知道的 10 件事

    关于 IPv6 你需要知道的 10 件事

    2021年8月8日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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