• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > js扩展运算符

js扩展运算符

作者:qq_32021031 字体:[增加 减小] 来源:互联网 时间:2017-09-11

qq_32021031通过本文主要向大家介绍了ES6等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

:…三个点,主要是用来将数组幻化为用逗号分隔的参数序列。

2.应用

合并数组
与解构赋值结合
如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
将字符串转为真正的数组
可以将类似数组的对象转为真正的数组
Map和Set结构,Generator函数

3.原理

扩展运算符内部调用的是数据解构的Iterator接口,因此只要具有Iterrator接口的对象,都可以使用扩展运算符。
ES6中本身就具有Iterator接口的有:数组、类似数组的对象、Map和Set。如果对没有iterator接口的对象使用扩展运算符,将会报错。
(1)对一般的对象添加Iterator接口。

let obj = {
    data:['hello','world'],
    [Symbol.iterator](){
        const self = this;
        let index = 0;
        return {
            next(){
                if(index < self.data.length){
                    return {
                        value:self.data[index++],
                        done:false
                    }
                }else{
                    return {
                        value:undefined,
                        done:true
                    }
                }
            }
        };
    }
};
for(var val of obj.data){
   console.log(val);
   //hello
   //world
}

(2)对类似数组的对象使用Iterator接口

let iterator = {
    0:'a',
    1:'b',
    2:'c',
    length:3,
    [Symbol.iterator]:Array.prototype[Symbol.iterator]
};
for(let item of iterator){
    console.log(item);
    //a
    //b
    //c
}
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11JavaScript利用闭包实现模块化
  • 2017-05-11Angular.js中控制器之间的传值详解
  • 2017-05-11jQuery图片轮播功能实例代码
  • 2017-05-11socket.io实现在线群聊功能
  • 2017-05-11JavaScript校验Number(4,1)格式的数字实例代码
  • 2017-09-11ES6 语法中函数参数的默认值
  • 2017-05-11Javascript Event(事件)的传播与冒泡
  • 2017-05-11jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
  • 2017-05-11angularjs实现多张图片上传并预览功能
  • 2017-05-11jquery做个日期选择适用于手机端示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 谈谈Vue.js——vue-resource全攻略
    • es6的Generotor 函数学习
    • .net MVC+Bootstrap下使用localResizeIMG上传图片
    • jQuery实现简单的抽奖游戏
    • 总结几道关于Node.js的面试问题
    • 微信小程序 常用工具类详解及实例
    • 微信小程序 Nginx环境配置详细介绍
    • js/jq仿window文件夹框选操作插件
    • javaScript嗅探执行神器-sniffer.js
    • 微信小程序教程系列之新建页面(4)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有