前端-符号参数的使用

符号参数的使用

1.rest的作用

ES6引入rest参数,用于获取函数的实参,用来替代arguments

function fn(a,b,...args){
console.log(a);
console.log(b);
console.log(args);
}
fn(1,2,3,4,5,6);

2.symbol的基本使用
介绍:ES6引入了一种新的数据类型symbol来表示独一无二的值,它是javascript语言的第七种数据类型,是一种类似于字符串的数据类型。

特点:1.symbol的值是唯一的,用来解决命名冲突的问题
2.symbol值不能与其他数据进行运算
3.symbol定义的对象属性不能使用for...in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名。
symbol给对象添加属性。

let game{
	name:'狼人杀',
	[Symbol('say'):function(){
	console.log('说话');
	}],
	[Symbol('kill'):function(){
     console.log('kill people');
}]
}

这样就完成了给game添加Symbol类型的属性。
3.迭代器

在 JavaScript 中,迭代器是一个对象,它定义一个序列,并在终止时可能返回一个返回值。 更具体地说,迭代器是通过使用 next()方法实现 Iterator protocol 的任何一个对象,该方法返回具有两个属性的对象: value,这是序列中的 next 值;和 done ,如果已经迭代到序列中的最后一个值,则它为 true 。如果 value 和 done 一起存在,则它是迭代器的返回值。

工作原理:

迭代器对象可以通过重复调用 next()显式地迭代。 迭代一个迭代器被称为消耗了这个迭代器,因为它通常只能执行一次。 在产生终止值之后,对 next()的额外调用应该继续返回{done:true}。

<script>
        const banji = {
            name: '1',
            mate: ['zhangfei', 'guanyu', 'liubei'],
            [Symbol.iterator]() {
                let that = this;
                let index = 0;
                return {
                    next: function () {
                        if (index < that.mate.length) {
                            const result = {
                                value: that.mate[index],
                                done: false
                            }
                            index++;
                            return result;
                        } else {
                            return {
                                value: undefined,
                                done: true
                            }
                        }

                    }

                }
            }
        }
        // 此时banji并不是一个迭代器,需要创建api接口

        // 现在要遍历mate属性
        for (atri of banji) {
            // for...of 是得到遍历属性的键名
            // for...in是的到遍历属性的键值
            console.log(atri);
        }
    </script>

在这里插入图片描述
完成了迭代器来遍历对象中的属性里面的数据的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值