• 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")
  • 相关阅读:
    Java中的监听器
    html中的meta元素及viewport属性值
    映射Xml文件中的数据到JavaBean中
    Java中关于Servlet中请求中文乱码及文件下载
    Java中的集合框架-Collections和Arrays
    Java中的集合框架-Map
    Java中的集合框架-Collection(二)
    Java中的IO流(六)
    迭代器和生成器的用法
    (爬虫)requests库
  • 原文地址:https://www.cnblogs.com/pittle-z/p/14071017.html
Copyright © 2020-2023  润新知