首页 > 其他分享 >es6中 for-in for-of的用法和区别

es6中 for-in for-of的用法和区别

时间:2022-08-16 08:56:19浏览次数:76  
标签:es6 console log 区别 用法 -------------------- ... iterable 属性

其中for-of是ES6新增的迭代语法

在MDN上的解释:

for...in语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

由此概念可看出区别:for..in是返回可枚举对象的属性,而for..of是返回可枚举对象的值

另外一点:for...in会继承, 而for...of不会,

for...in实例

Object.prototype.objCustom = function(){}
Array.prototype.arrCustom = function(){}
let iterable = [3,4,5]

iterable.foo = 'hello'
console.log(iterable)

console.log('--------------------')
for(let i in iterable){
    console.log(i)
}

console.log('--------------------')
for(let j in iterable){
    if(iterable.hasOwnProperty(j)){ // hasOwnProperty 判断是自己属性才能输出
	    console.log(j)
    }
}

console.log('--------------------')
for(let k of iterable){
    console.log(k)
}

// iterable 百度翻译:可迭代的
  • 输出结果
[ 3, 4, 5, foo: 'hello' ]
--------------------
0
1
2
foo
arrCustom
objCustom
--------------------
0
1
2
foo
--------------------
3
4
5

以上三个结果中:

1 . console.log(iterable) 返回数组本身

2 . 第一个for...in结果看出,可枚举属性除了本身的 0 , 1 , 2 ,foo之外,还有 arrCustom, objCustom。这是由于继承功能, iterable是数组实例,iterable.__proto__指向Array原型对象则有了前面定义的属性arrCustom, 而Array.__proto__指向Object原型对象,则有了前面定义的熟悉objCustom, 原型链在往上Object.__proto__指向null,此时终止继承。

3 . 第二个for...in内部使用hasOwnProperty判断只有是本身的属性才输出

标签:es6,console,log,区别,用法,--------------------,...,iterable,属性
From: https://www.cnblogs.com/pansidong/p/16590349.html

相关文章

  • podman基础用法
    podman基础用法目录podman基础用法podman常用命令podman的基础设置和使用运行示例容器列出正在运行的容器检查正在运行的容器测试httpd服务器查看容器的日志查看容器进程p......
  • go基础 - WaitGroup用法
    go基础-WaitGroup用法packagemainimport( "fmt" "sync" "time")/***CreatedbyGoland*User:[email protected]*Time:2022/8/15-23:33......
  • make clean 与 make distclean 的区别及其他
    原文地址:https://www.jianshu.com/p/9920cd513c2b/区别:makeclean仅清除之前编译的可执行文件及配置文件。makedistclean要清除所有生成的文件。Makefile在符合......
  • 28.虚拟语气在其他句型中的用法
    1.虚报语气在itis(high/about)time(that)...句型中的用法在itis(high/about)time(that)..句型中,后面的从句要用虚拟语气,从句谓语动词用过去式,也可用“should+动......
  • 24.虚拟语气在非真实条件句中的用法
    1.虚拟语气在假设过去情况的条件句中的用法  在表示对过去情况假设的非真实条件句中,从句应用过去完成时,即从句的谓语动词应用“had+过去分词”的形式,主句的谓语动词应......
  • Web前端和UI前端之间有哪些区别
    许多人无法区分用户界面前端和网络前端的区别,认为他们做同样的工作。因此,今天的爱创课堂将详细讨论两者的区别:Web前端开发对网站而言,前端即是网站的前端,它包括表现层和......
  • STL库常用数据结构用法
    介绍了map、vector、queue、set的使用。以及string与char【】的互相转换#include<iostream>#include<map>#include<set>#include<string>#include<unordered_map......
  • 交换机 和 路由器 区别
    因为路由器是基于IP设计的,俗称三层⽹络设备,路由器的各个端⼝都具有MAC地址和IP地址;⽽交换机是基于以太⽹设计的,俗称⼆层⽹络设备,交换机的端⼝不具有MAC地址。交......
  • Python 的 Requests 和 Httpx 在爬取应用中的一个区别
    HTTPX是功能齐全的Python3的HTTP客户端,支持同步和异步API,支持HTTP/1.1和HTTP/2。一般情况下,在爬取网页内容的时候,httpx与requests的基本使用方法几乎是一模一样的。......
  • CentOS系统中yum的基本用法
    最小化安装系统时,yum可能会因为网卡配置问题,随机启动配置,导致无法使用,在shell里面输入:yum--help ,结果显示yum已经正常安装了!!到底是哪里出了问题呢?经过网友的提示,我知......