ES6(三点运算符、Symbol类型)

ES6(三点运算符、Symbol类型)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>ES6(三点运算符、Symbol类型)</title>
	</head>
	<body>
		<script type="text/javascript">
			/* es6 三点运算符 可变参数 */


			function func(...params) {
				console.log(params);

				// 遍历
				params.forEach(function(item, index) {
					console.log(item, index);
				});
			}

			func(2, 4, 5);

			//    当然也有可能有固定的几个参数,然后也有不固定参数,这时候固定参数要写前面;
			function func2(a, ...params) {
				console.log(params);

				// 遍历
				params.forEach(function(item, index) {
					console.log(item, index);
				});
			}

			func2(2, 4, 5);

			//es6单点运算符有时候还可以用作合并数组;
			let arr1 = [2, 3];
			let arr2 = [1, ...arr1, 4];
			console.log(arr2);

			/* es6 Symbol类型 */

			let sb = Symbol();
			console.log(sb);
			console.log(typeof(sb))

			// 每个定义的symbol都是唯一的
			let sb2 = Symbol();
			console.log(sb == sb2); // 返回false


			//Symbol实际使用
			// 定义一个对象
			let symbol = Symbol('address'); // 可以加参数 指定属性名
			let symbol2 = Symbol('address');
			let obj = {
				name: 'jack',
				age: 10
			};

			// 假如我们要向对象里额外加个属性
			// obj.address='南京路' // 以前的写法,不过假如属性很多的时候,可能会出现属性重复
			obj[symbol] = '南京路'; // 这样能保证属性不重复
			obj[symbol2] = '南京路2';
			console.log(obj);

			// 因为Symbol具有唯一性,所以我们可以做Symbol定义常量
			
			const System_key = Symbol('114aaa');
			console.log(System_key);

			// Symbol.for() 全局搜索指定key的Symbol,找到的话,就返回该Symbol,找不到,就新建一个
			console.log(Symbol("foo") === Symbol("foo")); // false
			console.log(Symbol.for("bar") === Symbol.for("bar")); // true

			// Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。
			let fooKey = Symbol.for("bar1");
			console.log(Symbol.keyFor(fooKey)); // 返回bar1
			
			
		</script>



	</body>
</html>

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值