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

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

1.删除属性 delete运算符可以删除对象的属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象的联系...,不能删除继承属性(要删除继承属性必须从定义这个属性的原型对象上删除它,当然,这会影响到所有继承来自这个原型的对象) function inherit(p){ if(p == null){...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

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

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

    自ES5开始,js中的对象属性具有属性描述符。可以直接检测与定义属性特性。...后三者的默认值均为true; writable特性就是控制属性是否可改写; enumerable特性是控制属性是否会出现在对象的属性枚举中,所谓的可枚举,就相当于 “可以出现在对象属性的遍历中”,比如for...当对属性定义访问描述符时,js会忽略它们的 value和writable特性,而改为关心 set和get以及configurable和enumerable特性。...,js会忽略它们的value和writable特性。...补充个对象的枚举知识,有几点需要注意: in操作符可以用来判断属性是否在对象及其原型链中, for…in…操作符只可以用来判断属性是否可枚举,即属性特性enumerable为true时可枚举 propertyIsEnumerable

    1.1K30

    js对象属性

    (let p in zhangsan){ console.log(zhangsan.hasOwnProperty(p),`${p}:${zhangsan[p]}`) } 参考代码 codepen关于js...通过上面的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

    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,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。...for-in循环遍历所有可枚举属性的名称,包括继承的属性(请注意,Object.prototype的所有非可枚举属性都不会显示): > for (var x in obj) console.log(x)...最佳实践 一般规则是系统创建的属性是不可枚举的,而用户创建的属性是可枚举的: > Object.keys([]) [] > Object.getOwnPropertyNames([]) [ 'length...通常不应该向内置原型和对象添加属性,但如果这样做,咱们就应该使它们不可枚举以避免破坏内置代码。 正如咱们所看到的,非可枚举性主要受益于for-in并且确保使用它的遗留代码不会中断。

    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
    领券