java中的scr是什么意思,javascrpt中属性描述符的理解与使用
javascrpt中属性描述符的理解与使用
属性描述符是ES5出现的概念。顾名思义:它用于描述对象里面的属性应该是什么样,例如是否只读,能否可枚举,能否可配置等。怎样?好理解吧。
既然是对象里面的属性相关,我们首先需要创建一个对象,才能了解对象里面的属性描述符。
创建对象
细说之前,先来看下对象的三种定义方式:
1. var obj = {};
2. var obj = new Object();
3. var obj = Object.create(proto,[description]);
这里第一种与第二种的方式其实没什么区别,只是第一种采用字面量对象的方式,而他们创建的对象都有一个默认的proto属性,这个属性指向了 Object.prototype。
而第三种,第三种有了两个参数,相当于我们在创建对象的时候可以创建我们配置的新对象,比如没有proto属性的新对象或者初始化一些不可修改的属性等等,我们主要看第三种定义对象的方法。
Object.create();
创建一个新对象 具体使用看这个 MDN:Object.create(),下面只是简单罗列下:
接收两个参数
Object.create(proto,[propertiesObject]);
参数
描述
proto
新创建对象的原型对象(即新对象的proto);可传null,定义一个没有原型对象的对象。必传参数,对象格式。
propertiesObject
要初始化的属性的描述符。可选参数,对象格式
问题:
怎样使用Object.create()方法创建一个与{}拥有一样属性的对象?
Object.create(Object.prototype) 与 {} 与new Object() 就是一样的效果,这样都只有一个属性即:proto 指向 Object.prototype。
下面着重看下第二个参数:
第二个参数是一个对象,这个对象的属性也就是新对象的属性,不过属性对应的值却不是新对象属性对应的值。是不是有点绕,因为这个属性的值(值为对象)对应这个属性的描述符(终于出现本文的概念了)。
属性描述符分两种:数据描述符与存取描述符。
先看例子:
注意:如果第二个参数穿空对象,相当于没有传第二个参数作为 undefined。如果第二个参数对象采用数据描述符,只写一个value,则默认writable: false,configurable: false,enumerable: false,为不可写、不可删除、不可枚举。
修改对象
上面说完了新建对象,下面说下修改对象,即修改对象的属性:新增属性、修改属性、删除属性。
一般也有几种方法修改对象:
上面仅仅是操作属性的值,如果我想修改这个属性为不可以修改,该如何弄?
就需要用到下面的内置方法了。
Object.defineProperty();
在对象上添加/修改一个属性,并返回这个对象的引用。
参数
Object.defineProperty(obj,prop,descriptor);
参数
描述
obj
要操作的对象
prop
要添加或修改的属性名称
descriptor
该属性的描述符
上面出现了属性描述符的概念,老样子如果想仔细了解用法,看这MDN:Object.defineProperty()
下面简单看下这个方法:
查看属性描述符
内置方法里面提供了一个方法来查看属性的属性描述符。
Object.getOwnPropertyDescriptor()
参数:
Object.getOwnPropertyDescriptor(obj, prop)
参数
描述
obj
要操作的对象(对象类型)
prop
对象内属性名称(String类型)
好了,上面已经操作了设置属性描述符、修改属性描述符、查看属性描述符的功能,关于存取描述符介绍了有点少,有时间在搞吧。
java中的scr是什么意思,javascrpt中属性描述符的理解与使用相关推荐
- java最大文件描述符,java – 为什么JDK NIO使用这么多的anon_inode文件描述符?
我正在使用Sun的JDK 1.6.0_26和NIO(使用Netty),在lsof中我看到数百个文件描述符是anon_inode: $lsof -np 11225 | fgrep -w anon_ino ...
- Java 实验报告 了解如何使用类及其成员的修饰符,理解类的继承性,掌握方法的继承、重载和覆盖
班级软件16-2班 学号 3162052051734姓名梁振宇同组实验者 实验名称Java语言基础练习日期 2018年 05 月31 日 一.实验目的: 了解如何使用类及其成员的修饰符,理解类的继承性 ...
- Android-JNI开发系列《七》补充jni与java的数据类型的对应关系和数据类型描述符
人间观察 人只有不为生存而烦恼的时候,才会追求真正想要的东西. 在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等.其中都免不了在通信过程中需要知道Java基 ...
- Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介
原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...
- Bottle 框架中的装饰器类和描述符应用
2019独角兽企业重金招聘Python工程师标准>>> 最近在阅读Python微型Web框架Bottle的源码,发现了Bottle中有一个既是装饰器类又是描述符的有趣实现.刚好这两个 ...
- 简述linux内核中,Linux内核中的文件描述符(一)——基础知识简介
2.文件描述符 下面进一步介绍进程对自己所访问的file对象的管理方法.linux中使用一个数组来管理进程打开的文件的file对象,数组中的每个元素都存放一个纸箱进程所打开的文件的file对象.既然用 ...
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...
- linux内核中的文件描述符(一)--基础知识简介
linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...
- OpenCV 4.5.1 - 新版本 中 BEBLID 描述符尝鲜 (基于 ubuntu / c++)
时间:20210222 目录 文章目录 1. OpenCV 4.5.1 发布 1.1 参考资料 1.2 新特性 BEBLID 描述符 2. OpenCV 4.5.1 编译 (Ubuntu 18.04) ...
最新文章
- 四位先行进位电路逻辑表达式_计算机硬件基础:二进制半加器、全加器与加法电路...
- VIM技巧:显示行号
- 全国首个窄带物联网实验局落户福州 助力智慧城市建设
- 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
- 《预训练周刊》第9期:TABBIE:表格数据的预训练表示、「视觉预训练神作」:不用图片却训出图像识别SOTA?...
- linux 3g 程序,ARM板和Linux上的3G配置详解
- Hadoop动态扩容,增加节点
- 【SICP练习】79 练习2.51
- 在Java 8之前,您编写了几行代码来对对象集合进行排序?
- BZOJ 4710 [Jsoi2011]分特产 解题报告
- Spring 的application.properties项目配置与注解
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- SpringBoot中@Email报错解决
- vs2010报错:转换到 COFF 期间失败: 文件无效或损坏 解决方法
- ISP PIPLINE (六) AWB
- 9个实用PHP函数和功能
- 3-20模拟赛【果冻之王】题解
- 多线程练习(龟兔赛跑)
- arcmap制作地闪密度专题图
- 解决程序中出现小方块问题
热门文章
- contentType与dataType
- ContentType作用
- 重装系统发现有bitlocker(BitLocker的主要作用)
- boltzmann_推荐系统系列第7部分:用于协同过滤的Boltzmann机器的3个变体
- 抖音日活3.2亿,可能有 3.3亿用户在同一天内使用抖音吗?(泊松分布的Python实现)
- 畅享9p更新鸿蒙吗,荣耀智慧屏明天发布:9成首发鸿蒙 余承东亲临
- 第018课 ADC和触摸屏硬件原理详解及裸机编程
- 中国少儿编程教育行业投资趋势与前景规划建议报告2022年版
- 【mongoDB实战】聚合管道--$unwind
- html 弃用浏览器记住密码,html页面禁止自动填充浏览器记住的密码