首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js对象属性描述符详细介绍

属性描述符是 ECMAScript 5 新增的语法,它其实就是一个内部对象,用来描述对象的属性的特性。属性描述符的结构在 JavaScript 中,对象的属性描述符用于描述和定义对象属性的特性。...操作属性描述符属性描述符是一个内部对象,无法直接读写,可以通过下面几个函数进行操作。Object.getOwnPropertyDescriptor( ):可以读出指定对象私有属性属性描述符。...Object.defineProperty( ):通过定义属性描述符来定义或修改一个属性,然后返回修改后的描述符。Object.defineProperties( ):可以同时定义多个属性描述符。...修改属性描述符的 set 函数,重设检测条件,允许非数值型数字赋值。...通过使用这些描述符,我们可以灵活地控制和定义对象的属性行为,例如限制某些属性只读、隐藏某些不需要枚举的属性等。

14610
您找到你想要的搜索结果了吗?
是的
没有找到

python 属性描述符

描述符示例:验证属性 2. 自动获取储存属性的名称 3. 继承改进 4....描述符示例:验证属性 描述符是对多个属性 运用 相同存取逻辑的一种方式 描述符是实现了 特定协议 的类,这个协议包括 __get__、__set__ 和 __delete__ 方法 property...——管理 数据属性 这种描述符也叫覆盖型描述符,因为描述符的 __set__ 方法使用托管实例中的同名属性覆盖(即插手接管)了要设置的属性 4....覆盖型与非覆盖型描述符对比 通过实例读取属性时, 通常返回的是实例中定义的属性; 但是,如果实例中没有指定的属性, 那么会获取类属性。...描述符用法建议 创建只读属性最简单的方式是 使用特性 property 使用 描述符类 实现只读属性,要记住,__get__ 和 __set__ 两个方法必须都定义,否则,实例的同名属性会遮盖描述符 用于

36810

JS入门难点解析13-属性描述符,数据属性和访问器属性

简介 JS的对象是一组无序属性的集合。那么对于这组无序属性来说,拥有哪些特性呢?ECMAScrip5中定义了属性的这些特性,但这些特性是为了实现JS引擎用的,在JS中无法直接来访问它们。...该方法接受三个参数:属性所在对象,属性名字和一个描述符对象。 属性所在对象,属性名字很好理解。那么属性描述符对象呢?...属性描述符详解 4.1 数据属性描述符对象 4.1.1 属性值value 对于数据属性,我们通过value来定义和获取其属性值。...能够操纵属性描述符的方法 7.1 为目标对象设置单个属性 设置单个属性可以使用Object.defineProperty()方法,要注意的是,对于同一个属性,不可以同时在描述符中指定属于数据描述符的value..._doubleA); // 2 参考 BOOK-《JavaScript高级程序设计(第3版)》第6章 BOOK-《你不知道的JavaScript》 第2部分 JS属性特性(属性描述符) ECMAScript

2K10

关于属性描述符PropertyDescriptor

本来我也没有仔细了解过描述符这一块的知识,不过粉丝问了,我就抽周末的时间看看,顺便学习一下,粉丝问的刚好是PropertyDescriptor这个属性描述符,我看了下源码。.... */ public class PropertyDescriptor extends FeatureDescriptor { //... } emmmm,假装自己英语能厉害的说,属性描述符描述了一个属性...同时它也提供一个扩展功能,方便任意属性或键值对可以于设计功能相关联。...PropertyDescriptor 那么我们大致知道了FeatureDescriptor,接下来就可以来深入了解看看这个属性描述符PropertyDescriptor。...writeMethod.invoke(cat,"copy"); System.out.println("修改后:" + cat); } 上面的demo是,我先创建了一个对象,然后通过属性描述符读取

37230

关于属性描述符PropertyDescriptor

本来我也没有仔细了解过描述符这一块的知识,不过粉丝问了,我就抽周末的时间看看,顺便学习一下,粉丝问的刚好是PropertyDescriptor这个属性描述符,我看了下源码。.... */ public class PropertyDescriptor extends FeatureDescriptor { //... } emmmm,假装自己英语能厉害的说,属性描述符描述了一个属性...同时它也提供一个扩展功能,方便任意属性或键值对可以于设计功能相关联。...PropertyDescriptor 那么我们大致知道了FeatureDescriptor,接下来就可以来深入了解看看这个属性描述符PropertyDescriptor。...writeMethod.invoke(cat,"copy"); System.out.println("修改后:" + cat); } 上面的demo是,我先创建了一个对象,然后通过属性描述符读取

70730

Python学习之路40-属性描述符

(实例属性描述符实例同名)!...如果某个公开属性是由描述符管理的,这个公开属性就是托管属性,否则就是一般的属性。但托管属性并不是指与之同名的用作类属性描述符实例。...或者说,与self.storage_name同名的属性就是储存属性。这里也体现了“描述符”为什么叫“描述符”:把一个属性“描述”成另一个属性。...可以分为以下三种情况(再次提醒,描述符是类属性): 如果描述符实现了__get__和__set__方法,描述符会覆盖同名实例属性,即属性的存取值过程都会被描述符接管。...在赋值过后,obj中有了实例属性non_over,并且它覆盖了描述符,读值过程没有被接管。删除了实例属性后,描述符不再被覆盖。非覆盖型描述符可以实现缓存。 4.

35530

有效的python属性管理:描述符的使用

本文就以自己程序中运用描述符来进行有效的python属性管理为例子,介绍python中描述符的概念以及如何更好的使用描述符这个强有力的工具帮助我们有效管理python程序中的数据访问控制。...这时候就要召唤Python的描述符机制了,他的存在是python开发者能够复用与属性相关的逻辑。 描述符协议 Python描述符协议是一种再模型中引用属性时将要发生事件的方法。...描述符的原理 上面进行了基本的描述符创建和使用效果,那么描述符是如何工作的才能让我们以这种方式操作属性呢? 一句话总结就是通过将属性访问进行了转译。...描述符触发 当我们进行属性访问时便会触发描述符(如果这个属性具有描述符定义的时候),当我们对对象obj的属性d进行访问时候,obj.d,描述符的触发过程大致:先在对象obj的字典中寻找d,如果d是个含有...我们创建了两个学生实例,但是身高属性却是同一个对象,这是因为描述符是类属性,因此每个实例中进行访问的时候都是访问的类属性的引用。

77290

深入了解对象属性标志以及描述符

属性标志以及描述符 正如我们所知,对象可以存储属性。 到目前为止,属性对我们来说只是一个简单的“键-值”对。但对象属性实际上是一个更灵活和强大的东西。...propertyName: 属性的名称。 返回值是一个所谓的“属性描述符”对象:它包含值和所有标记。...语法是: Object.defineProperty(obj, propertyName, descriptor) obj, propertyName 用于应用描述符的对象及其属性。...descriptor 要应用的属性描述符对象。 如果该属性存在,defineProperty将更新其标记。否则,它将创建具有给定值和标志的属性;在这种情况下,如果没有提供标志,则假定它为假。...另一个区别是for…in会忽略符号属性,但Object.getOwnPropertyDescriptors返回所有属性描述符,包括符号描述符。 全局密封对象 属性描述符在单个属性的级别上工作。

46730

js nextSibling属性和previousSibling属性

1:nextSibling属性属性表示当前节点的下一个节点(其后的节点与当前节点同属一个级别);如果其后没有与其同级的节点,则返回null。...需要特别注意的是:该属性在不同的浏览器中的执行结果并不都相同,见下面例示: 先来看一个例子: <input id=“a4” type=“button” οnclick...opera和safari对nextSibling的处理方式与FF一致 2:previousSibling属性属性与nextSibling属性的作用正好相反。...3:通过nextSibling或者 previousSibling所获得的HTML标签元素对象的属性问题 一般先通过nextSibling.nodeName来获知其标签名,或者通过nextSibling.nodeType...如果该nextSibling.nodeName = #text,则通过nextSibling.nodeValue来获知其文本值;否则,可以通过nextSibling.innerHTML等其他常用标签元素属性来获取其属性

6.2K30

深入 JS 对象属性

属性决定JS中对象的状态,本文章主要分析这些属性是如何工作的。 JS几种不同的属性 JS有三种不同的属性:数据属性,访问器属性和内部属性。...,属性描述对象如下所示: { get: function () { return 123 }, enumerable: true, configurable: false } 3.1 使用属性描述符的函数...下面的函数允许咱们使用属性描述符: Object.defineProperty(obj, propName, propDesc):该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,...obj:要在其上定义属性的对象。 prop:要定义或修改的属性的名称。 descriptor:将被定义或修改的属性描述符。...如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。

8.5K50

JS 对象属性相关--检查属性、枚举属性

1.删除属性 delete运算符可以删除对象的属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象的联系...,而不会去操作属性中的属性  看到delete a.p之后b.x仍然为1 var a = {p:{x:1}}; var b = a.p; console.log(a.p.x); //1 delete a.p...a.p.x); //TypeError a.p is undefined console.log(a.p); //undefined console.log(b.x); //1 delete只能删除自有属性...,不能删除继承属性(要删除继承属性必须从定义这个属性的原型对象上删除它,当然,这会影响到所有继承来自这个原型的对象) function inherit(p){ if(p == null){...obj.hasOwnProperty("y")); //false console.log(obj.hasOwnProperty("toString")); //false 因为obj继承了这个方法,但不是它自己的 只有检测到是自由属性并是可枚举的属性

5.8K20
领券