JavaScript 属性描述符
属性描述符(Property Descriptor)是 ES5 之后出现的概念,顾名思义,它用于描述属性应该是什么样,例如是否只读,能否枚举,能否可配置等。所有对象属性均可使用属性描述符来定义。
属性描述符的六个属性
value
- 属性值。
writable
- 是否允许赋值,true 表示允许,否则该属性不允许赋值。
get
- 返回属性值的函数。如果为 undefined 则直接返回描述符中定义的 value 值。
set
- 属性的赋值函数。如果为 undefined 则直接将赋值运算符右侧的值保存为属性值。
configurable
- 如果为 true,则表示该属性可以重新定义描述符,或者从属性的宿主删除。缺省为
true。
- 如果为 true,则表示该属性可以重新定义描述符,或者从属性的宿主删除。缺省为
enumerable
- 如果为 true,则表示遍历宿主对象时,该属性可以被遍历到。缺省为
true。
- 如果为 true,则表示遍历宿主对象时,该属性可以被遍历到。缺省为
Object 操作属性的方法
Object.defineProperty(obj, prop, descriptor)
- 使用描述符 descriptor 定义 obj 的 prop 属性。
Object.getOwnPropertyDescriptor(obj, prop)
- 获取 obj 的 prop 属性描述符。
Object.preventExtensions(obj)
- 禁止为当前对象 obj 添加新属性。
Object.seal(obj)
- 封印当前对象 obj,禁止添加新属性,并且将所有现有属性 configurable 设置为 false。
Object.freeze(obj)
- 冻结当前对象 obj,禁止增加新属性,禁止删除现有属性或修改属性描述符,相当于将该 obj 变成了 immutable。
Object.isExtensible(obj)
- 判断当前对象 obj 是否允许扩展。
Object.isSealed(obj)
- 判断当前对象 obj 是否被封印。
Object.isFrozen(obj)
- 判断当前对象 obj 是否被冻结。
Object.prototype.hasOwnProperty(prop)
- 判断当前对象是否拥有 prop 属性。
JavaScript 属性描述符的更多相关文章
- 深入理解javascript对象系列第三篇——神秘的属性描述符
× 目录 [1]类型 [2]方法 [3]详述[4]状态 前面的话 对于操作系统中的文件,我们可以驾轻就熟将其设置为只读.隐藏.系统文件或普通文件.于对象来说,属性描述符提供类似的功能,用来描述对象的值 ...
- 理解JavaScript中的属性描述符
我们把描述JavaScript中定义内部特性的属性叫做属性描述符 分为两大类:数据描述符和存取描述符 数据描述符是一个拥有可写或不可写的属性(Writable); 存取描述符不包含数据值,是一组拥有g ...
- JavaScript.descriptor(属性描述符)
属性描述符是对JavaScript属性的描述,包括:value.writable.enumerable.configurable,除value其他默认为true. 本文包括: 取得属性描述符. Obj ...
- Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
Python:高级主题之(属性取值和赋值过程.属性描述符.装饰器) 背景 学习了Javascript才知道原来属性的取值和赋值操作访问的“位置”可能不同.还有词法作用域这个东西,这也是我学习任何一门语 ...
- JS属性描述符之Object.defineProperty()定义对象属性特性
一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...
- Object.defineProperty 与 属性描述符
为JavaScript对象新增或者修改属性,有两种不同方式:直接使用=赋值或者使用Object.defineProperty 定义,使用后者的话还可以设置属性的描述符. Object.definePr ...
- JS属性描述符
var myObject = { a:2 }; Object.getOwnpropertyDescriptor(myObject,"a"); { value:2, writable ...
- Python 属性描述符和属性的查找过程
属性描述符可以用来控制给属性赋值的时候的一些行为 import numbers class IntField: def __get__(self, instance, owner): return s ...
- python之属性描述符与属性查找规则
描述符 import numbers class IntgerField: def __get__(self, isinstance, owner): print('获取age') return se ...
随机推荐
- atitit.条形码的原理与生成总结java Barcode4j barcode o5
atitit.条形码的原理与生成总结java Barcode4j barcode o5 条形码类库使用报告Barcode4j, ZXing 1 使用成果图片 1 条形码标准code 128和code ...
- Javascript实现计数器,定时警告和停止
<html> <head> <meta charset="utf-8"> <title>定时警告</title> < ...
- AngularJS(一)
什么是AngularJS[双向数据绑定:从界面的操作能实时反映到数据,数据的变更能实时展现到界面.]?1.AngularJS 使得开发现代的单一页面应用程序(SPAs:Single Page Appl ...
- 17数据表&E-R模型&概念数据模型上-选学天轰穿大话数据库视频教程
大纲:解剖“数据表”,戏说E-R模型,概念数据模型(E-R 到 CDM),使用PowerDesigner创建概念模型,生成逻辑数据模型 土豆超清地址: 腾讯超清地址: 百度云盘下载地址:上传ing,稍 ...
- easy UI获取数据,打开毕弹窗
<div id="modalwindow" class="easyui-window" data-options="modal:true,clo ...
- iOS 9 failed for URL: "XXX://@" - error: "This app is not allowed to query for scheme XXX" iOS 从APP里启动另一APP
iOS 从C APP里启动 D APP 首先在D APP里设置 URL Schemes 在info.plist 文件里添加URL Schemes URL Types -->item0 --> ...
- Visual Studio 2008 使用 WinCE 5.0 Emulator
1. 簡介 由於 Visua Studio 2008 與 WinCE 5.0 Emulator 並沒有完全整合,因此想要測試我們所開發的 Windows CE 程式,需透過設定,將我們所開發的程式丟到 ...
- eclipse无线连接android真机能进调试
将手机与电脑连接到同一个网段, 在手机上安装wifi adb程序,并打开,会得到一个IP及端口,比如是 192.168.1.126:5555 进入android sdk目录sdk\platform-t ...
- window下,加载redis拓展
下载地址: http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/ 看下自己phpinfo的信息 就选择 ts-x86 ...
- 怎么删除github上的仓库
1.到你的个人中心.点击你的个人账号.下图的红色部分 2.点击repositories(仓库),选择你要删除的项目 3.code这一行导航栏 最后的一个. setting 4.下拉页面到最下面 Del ...