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

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

1.删除属性 delete运算符可以删除对象的属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象的联系...obj.hasOwnProperty("y")); //false console.log(obj.hasOwnProperty("toString")); //false 因为obj继承了这个方法,但不是它自己的 只有检测到是自由属性并是枚举属性时...但不是它自己的 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...(obj.p);// undefined undefined console.log(obj[p]);//1 2 } 拓展1: 每个对象都有与之相关的原型(prototype)、类(class)、扩展性

5.8K20

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.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    :value(属性值)、writable(可写)、enumerable(枚举)、configurable(可配置)。...后三者的默认值均为true; writable特性就是控制属性是否改写; enumerable特性是控制属性是否会出现在对象的属性枚举中,所谓的枚举,就相当于 “可以出现在对象属性的遍历中”,比如for...补充个对象的枚举知识,有几点需要注意: in操作符可以用来判断属性是否在对象及其原型链中, for…in…操作符只可以用来判断属性是否枚举,即属性特性enumerable为true时枚举 propertyIsEnumerable...Object.keys()会返回一个数组,包含所有枚举属性 Object.getOwnPropertyNames()会返回一个数组,包含所有属性,无论它们是否枚举 in和hasOwnProperty...不过可以递归遍历某个对象的整条原型链并保存每层中使用Object.keys()得到的属性列表,这里只包含枚举属性

    1.1K30

    js对象属性

    均为布尔型,默认为true,分别代表删除、枚举修改,第四个为true 访问器属性 configurable,enumerable,getter,setter 后面两个是非必须的 虽然似乎说的很明白...通过上面的for in的例子,你可以通过for in +hasOwnProperty 的方式得到对象枚举非原型属性以及枚举原型属性。那么还有其他方法么?肯定有的。下面进行表格说明。...方法 内容 备注 for in 枚举,自身以及继承属性 对象以及继承,枚举,不含 Symbol 属性 Object.keys(obj) 返回一个数组,包括对象自身的(不含继承的)所有枚举属性键名...对象自身枚举,不含 Symbol 属性 Object.getOwnPropertyNames(obj) 返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名 对象自身...(obj) 返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否枚举

    15.6K10

    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.8K30

    深入 JS 对象属性

    属性决定JS中对象的状态,本文章主要分析这些属性是如何工作的。 JS几种不同的属性 JS有三种不同的属性:数据属性,访问器属性和内部属性。...如果没有指定为 undefined,则是要添加到新创建对象的枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。...4.1 受枚举性影响的操作 枚举性仅影响两个操作:for-in循环和Object.keys()。...for-in循环遍历所有枚举属性的名称,包括继承的属性(请注意,Object.prototype的所有非枚举属性都不会显示): > for (var x in obj) console.log(x)...最佳实践 一般规则是系统创建的属性是不可枚举的,而用户创建的属性枚举的: > Object.keys([]) [] > Object.getOwnPropertyNames([]) [ 'length

    8.5K50

    JS中愉快地使用枚举

    背景 在JS中并没有原生枚举的实现,可以通过下面几种方法来模拟类似的操作。...使用变量储存枚举值 这次进阶了一下,虽然代码啰嗦了,但是犯错概率会大大降低: const Days = Object.freeze({ Mon: 'Mon', Tue: 'Tue',...使用数字 这也是老生常谈的内容了,好多语言在没有枚举类型的时候都喜欢这么干: const Days = Object.freeze({ Mon: 0, Tue: 1, Wed:...JS定义枚举集合时的优化 可以尝试下列几种方法,只需要写出来枚举的名字,通过几个数组的API进行赋值操作。 但是由于是动态执行的,效率相对来说会降低,不过这通常是不足一提的。...数字类型 用index当成枚举值: const Days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'].reduce((pre, cur, index

    3.1K10
    领券