美文网首页
每日一题2020-04-20

每日一题2020-04-20

作者: 欢欢小天使K | 来源:发表于2020-04-20 22:59 被阅读0次

每日一题

var obj = {x: 1, y: 2, z: 3};
[...obj]
能否以某种方式为上面的语句是用展开运算而不导致类型错误,如果可以,写出解决方式

答案:可以。解决方式见解析

解析:

展开语法和for...of语句遍历iterable对象定义要遍历的数据。
Array和Map是具有默认迭代行为的内置迭代器。对象不是可迭代的,但是可以通过使用iterable和iterator协议使他们可迭代。
在Mozilla文档中,如果一个对象实现了@iterabtor方法,那么他就是可迭代的,这意味着这个对象(或者他的原型链上的一个对象)
必须有一个带有@iterator键的属性,这个键可以通过常量Symbol.iterator获得。

  //解决方式一
  var obj = { x: 1, y: 2, z: 3 };
  obj[Symbol.iterator] = function(){
    //iterator 是一个具有next方法的对象
    //他的返回至少有一个对象
    //两个属性: value & done。
    return {
      //返回一个iterator对象
      next: function(){
        if(this._countDown === 7){
          // const lastValue = this._countDown;
          return { value: this._countDown, done: true };
        }
        this._countDown = this._countDown + 1;
        return { value: this._countDown, done: false };
      },
      _countDown: 0,
    };
  };
  console.log([...obj])

控制台执行结果:


image.png

相关文章

  • 每日一题2020-04-20

    每日一题 var obj = {x: 1, y: 2, z: 3};[...obj]能否以某种方式为上面的语句是用...

  • Day 4 Project 我的微信好友

    附:每日一题

  • 每日一题-2017-09-01

    2017.9.1每日一题: A senior manager responsible for business t...

  • 【mysql经典题】数据准备

    注意: 每日一题,大家一起监督、讨论学习。

  • 2020-04-21

    2020-04-20 2020-04-20 成长日志第305天 家名:温暖有爱之家 家规:真诚待人不自欺,学会看见...

  • 每日一题: Piscasso框架

    每日一题: Piscasso框架 GlideFrescoPicasso_1Picasso_2 面试率: ★★★☆☆...

  • 20200323订正须知

    1.基础作业 2.小状元 3.每日一题

  • 每日一题

    每日一题是在十一假期之后在班级开展的拓展延伸数学知识的一种尝试,可以说是每天给学生补充的数学思维题。每日一题...

  • 我与学生二三事(三)

    遗憾的事情 一,每日一题 学生进入高中学习时起,我就要求每一名学生都准备一个“累积本”,每日累积一题,可以是易错题...

  • 前端要点记录

    每日一题写给自己,不积跬步无以至千里,千里之行始于足下。相信自己,量变引起质变。每日一题坚持下去,你现在的自己是由...

网友评论

      本文标题:每日一题2020-04-20

      本文链接:https://www.haomeiwen.com/subject/sbasihtx.html