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")
  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/pittle-z/p/14071017.html
Copyright © 2011-2022 走看看