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

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

1.删除属性 delete运算符可以删除对象属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象联系...,不能删除继承属性(要删除继承属性必须从定义这个属性原型对象上删除它,当然,这会影响到所有继承来自这个原型对象) function inherit(p){ if(p == null){...只有检测到是自由属性并是可枚举属性时,后者才返回true var obj = {x:1}; console.log(obj.propertyIsEnumerable("x")); //true console.log...console.log(Object.prototype.propertyIsEnumerable("toString")); //false 因为最原始 toString就是不可枚举 当然,...== undefined); //true 3.枚举属性 var obj = {x:1,y:2}; for(p in obj){ console.log(p);//x y console.log

5.8K20

js对象属性

第一点,for in循环可以访问到对象具有的所有可枚举属性; 第二点 对象具有的属性可能是多来源,可能是自己新建,可能是构造函数新建,可能是来源于构造函数继承;可能是来源于原型,可能是来源于原型式继承...通过上面的for in例子,你可以通过for in +hasOwnProperty 方式得到对象枚举非原型属性以及可枚举原型属性。那么还有其他方法么?肯定有的。下面进行表格说明。...方法 内容 备注 for in 可枚举,自身以及继承属性 对象以及继承,可枚举,不含 Symbol 属性 Object.keys(obj) 返回一个数组,包括对象自身(不含继承)所有可枚举属性键名...对象自身可枚举,不含 Symbol 属性 Object.getOwnPropertyNames(obj) 返回一个数组,包含对象自身所有属性(不含 Symbol 属性,但是包括不可枚举属性键名 对象自身...,包括不可枚举属性 Object.getOwnPropertySymbols(obj) 返回一个数组,包含对象自身所有 Symbol 属性键名 对象自身,symbol Reflect.ownKeys

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

《你不知道JavaScript》:js对象属性特性和枚举深入

《你不知道JavaScript》第二部分 对象 第 2 篇。 自ES5开始,js对象属性具有属性描述符。可以直接检测与定义属性特性。...后三者默认值均为true; writable特性就是控制属性是否可改写; enumerable特性是控制属性是否会出现在对象属性枚举中,所谓枚举,就相当于 “可以出现在对象属性遍历中”,比如for...,js会忽略它们value和writable特性。...补充个对象枚举知识,有几点需要注意: in操作符可以用来判断属性是否在对象及其原型链中, for…in…操作符只可以用来判断属性是否可枚举,即属性特性enumerable为true时可枚举 propertyIsEnumerable...不过可以递归遍历某个对象整条原型链并保存每层中使用Object.keys()得到属性列表,这里只包含可枚举属性

1K30

深入 JS 对象属性

属性决定JS对象状态,本文章主要分析这些属性是如何工作JS几种不同属性 JS有三种不同属性:数据属性,访问器属性和内部属性。...如果没有指定为 undefined,则是要添加到新创建对象枚举属性(即其自身定义属性,而不是其原型链上枚举属性对象属性描述符以及相应属性名称。...for-in循环遍历所有可枚举属性名称,包括继承属性(请注意,Object.prototype所有非可枚举属性都不会显示): > for (var x in obj) console.log(x)...通常不应该向内置原型和对象添加属性,但如果这样做,咱们就应该使它们不可枚举以避免破坏内置代码。 正如咱们所看到,非可枚举性主要受益于for-in并且确保使用它遗留代码不会中断。...不可枚举属性创建了一种错觉,即for-in仅迭代用户创建对象自有的属性。 在咱们代码中,如果可以,应该避免使用for-in。

8.5K50

js对象属性getter和setter

故温故一遍getter和setter定义属性方法。 通过对象字面量定义get和set方法 有个注意地方,get与set函数体都不能再定义本身该属性,否则执行时候会陷入死循环,抛出栈溢出。...在对象字面量中,同一个属性不能有两个get,也不能既有get又有属性键值(不允许使用 { get x() { }, get x() { } } 和 { x: …, get x() { } } ) 在同一个对象中...,不能为一个已有真实值变量使用 set ,也不能为一个属性设置多个 set。...get返回值直接为该属性值。 可以定义configurable、enumerable,默认都为false。...双向数据绑定底层思想非常基本,它可以被压缩成为三个步骤: 1.我们需要一个方法来识别哪个UI元素被绑定了相应属性 2.我们需要监视属性和UI元素变化 3.我们需要将所有变化传播到绑定对象和元素

3.1K50

JS对象属性排序小技巧

前面我们讲到数组对象去重时候,如果由于对象里面的内容是一样,但是属性位置不一样,从而导致我们可能出现无法去重,虽然JSON.stringify()第二个参数能够自行添加属性到数组里面,但有可能出现我们并不知道对象具体有哪些属性...后来我搜索相关文章,发现了一个很有用代码,能够自动对属性进行排序,分享给你们。...orderedJsonStringify(o) { return JSON.stringify(Object.keys(o).sort().reduce((r, k) => (r[k] = o[k], r), {})); } 完整数组对象去重如下...Object.keys(item).sort())]=item; }) arr = Object.keys(unique).map(function(u) { //Object.keys()返回对象所有键值组成数组...,map方法是一个遍历方法,返回遍历结果组成数组.将unique对象键名还原成对象数组 return JSON.parse(u); }) return arr; } function

3.3K20

JS操作对象属性(获取、添加、删除、修改对象属性

中括号内可以使用字符串,也可以使用字符型表达式,即只要表达式值为字符串即可。 示例3 下面示例使用 for/in 遍历对象枚举属性,并读取它们值,然后重写属性值。...i 是一个变量,其返回值为 for/in 遍历对象枚举每个属性名。...其中包括可枚举和不可枚举属性和方法名称。如果仅返回可枚举属性和方法名称,应该使用 Object.keys() 函数。...具体用法如下: Object.keys(object); 参数 object 表示指定对象,可以是JavaScript 对象或 DOM 对象。返回值是一个数组,其中包含对象枚举属性名称。 5....如果使用 for/in 语句枚举对象属性,只能枚举属性值为 undefined 属性,但不会枚举已删除属性。 使用方法 方法也是函数,当函数被赋值给对象属性,就被称为方法。

15.4K00

js对象中什么是可枚举性(enumerable)?

概念 可枚举性(enumerable)用来控制所描述属性,是否将被包括在for…in循环之中。具体来说,如果一个属性enumerable为false,下面三个操作不会取到该属性。...// : // 4 // __proto__ // : // Array(0)上面代码中,d属性...enumerable为false,所以一般遍历操作都无法获取该属性,使得它有点像“秘密”属性,但还是可以直接获取它值。...至于for...in循环和Object.keys方法区别,在于前者包括对象继承自原型对象属性,而后者只包括对象本身属性。...如果需要获取对象自身所有属性,不管enumerable值,可以使用Object.getOwnPropertyNames方法 Jetbrains全家桶1年46,售后保障稳定 版权声明:本文内容由互联网用户自发贡献

1.5K20

JS中轻松遍历对象属性几种方式

自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象自身可枚举属性组成数组,数组中属性排列顺序和使用 for...in 循环遍历该对象时返回顺序一致 。...如果对象键-值都不可枚举,那么将返回由键组成数组。 这是合理,因为大多数时候只需要关注对象自身属性。...Object.values() 返回属性值 Object.values()方法返回一个给定对象自身所有可枚举属性数组,值顺序与使用for...in循环顺序相同 ( 区别在于 for-in 循环枚举原型链中属性...若要将结果放入数组,扩展运算符…是必要对象属性顺序 JS 对象是简单键值映射,因此,对象属性顺序是微不足道, 在大多数情况下,不应该依赖它。...Object.entries()最适用于数组解构赋值,其方式是将键和值轻松分配给不同变量。 此函数还可以轻松地将纯JS对象属性映射到Map对象中。

13.5K20

SpringBoot返回枚举对象所有属性对象形式返回(一个@JSONType解决)

一、前言 最近小编在开发中遇到个问题,就是关于枚举方面的使用。一些固定不变数据我们可以通过枚举来定义,减少对数据库查询。是一种常见开发技巧!...常见场景需求是:通过某一个属性获取对应枚举属性另一个值;还有就是常量枚举,比如一下统一返回状态和编码! ==小编需求是把枚举所有属性都取出来,转成实体类那种返回给前端!...== 最简单解决就是拿到所有的然后便利加到新集合里,这样还需要定义一个实体类来接收转一下!...这样有点麻烦,小编也是无意发现了,项目中有以前大佬留下来一个注解@JSONType(serializeEnumAsJavaBean = true),一加上只需要我们使用枚举.values()即可直接帮助我们返回了...dependency> com.alibaba fastjson 三、枚举

3.4K10

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

属性描述符是 ECMAScript 5 新增语法,它其实就是一个内部对象,用来描述对象属性特性。属性描述符结构在 JavaScript 中,对象属性描述符用于描述和定义对象属性特性。...Object.getOwnPropertyNames( ):获取对象所有私有属性。Object.keys( ):获取对象所有本地可枚举属性。...propertyIsEnumerable( ):对象实例方法,直接调用,判断指定属性是否可枚举。...通过使用这些描述符,我们可以灵活地控制和定义对象属性行为,例如限制某些属性只读、隐藏某些不需要枚举属性等。...总的来说,对象属性描述符提供了对对象属性行为进行详细控制和定义能力,包括可配置性、可枚举性、可写性、获取和设置方法等。这使得我们能够更好地管理和操作对象各个属性

17410
领券