zoukankan      html  css  js  c++  java
  • for...in 与 for...of

    Object.keys(..) 
    会返回一个数组,包含所有可枚举属性,
    Object.getOwnPropertyNames(..) 会返回一个数组,包含所有属性,无论它们是否可枚举。
    propertyIsEnumerable(..) 会检查给定的属性名是否直接存在于对象中(而不是在原型链 上)并且满足 enumerable:true。
    
    // 让 b 不可枚举  
    Object.defineProperty(myObj,"b",{ enumerable: false, value: 3 } )
    for...in 是遍历不出b属性的
    (for..in 循环可以用来遍历对象的可枚举属性列表(包括 [[Prototype]] 链))
    还有就是for...in遍历无法直接获取属性值
    
    ES6 增加了一种用来遍 历数组的for...of 循环语法(如果对象本身定义了迭代器的话也可以遍历对象):
    var myArray = [ 1, 2, 3 ];for(let v of myArr) console.log(v);
    for..of 循环首先会向被访问对象请求一个迭代器对象,然后通过调用迭代器对象的 next() 方法来遍历所有返回值。
    
    
    但是 b in myObj 却是true(可以通过 in 操作符来判断是否存在)
    
    hasOwnProperty(..) 只会检查属性是否在 myObj 对象中,不会检查 [[Prototype]] 链。
    
    所有的普通对象都可以通过对于 Object.prototype 的委托来访问 hasOwnProperty(..)
    但是有的对象可能没有连接到Object.prototype(通过 Object.create(null)来创建)
    这时可以使用一种更加强硬的方法来进行判断:Object.prototype.hasOwnProperty. call(myObj,"a")
  • 相关阅读:
    Navicat 导出sql问题
    2017,我的第一次年终总结
    dev treelist和searchcontrol组合模糊查询用法
    构造函数详解
    Devexpress常见问题
    Devexpress 常用的功能
    dev Gridcontrol控件属性部分
    记录DEV gridview获取行列数据方法
    string类的几种方法
    plsql中的procedure和function编程
  • 原文地址:https://www.cnblogs.com/pittle-z/p/14071017.html
Copyright © 2011-2022 走看看