首页 > 其他分享 >前端打怪之旅=>Es6入门(运算符、Symbol)

前端打怪之旅=>Es6入门(运算符、Symbol)

时间:2023-10-17 20:32:54浏览次数:45  
标签:Es6 console log Symbol 运算符 打怪 oss image

运算符

...扩展运算符能将数组转换为逗号分隔的参数序列

声明一个数组

const tfboys=['易烊千玺','王源','王俊凯'];
        //声明一个函数
        function action(){
            console.log(arguments)
        }
        
        action(tfboys)

前端打怪之旅=>Es6入门(运算符、Symbol)_运算符

 是一个数组元素,arguments里只有一个元素

const tfboys=['易烊千玺','王源','王俊凯'];
        //声明一个函数
        function action(){
                console.log(arguments)
        }

        action(...tfboys)

前端打怪之旅=>Es6入门(运算符、Symbol)_运算符_02

Symbol基本使用

ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型。

创建Symbol对象

  • 方式一
        //创建symbol
        let s1 = Symbol();
        console.log(s,typeof s1);
    let s2 = Symbol('浅辄')

    let s3 = Symbol('浅辄')
    console.log(s2==s3)

前端打怪之旅=>Es6入门(运算符、Symbol)_方法调用_03

  • 方式二
        let s4 = Symbol.for('浅辄')
        console.log(s4,typeof s4)

前端打怪之旅=>Es6入门(运算符、Symbol)_数据类型_04

let s4 = Symbol.for('浅辄')
		let s5 = Symbol.for('浅辄')
		console.log(s4==s5)

前端打怪之旅=>Es6入门(运算符、Symbol)_方法调用_05

Symbol特点

1)Symbol的值是唯一的,用来解决命名冲突的问题

2)Symbol值不能与其他数据进行运算

        let result =s +100;
        let result =s>100;
        let result =s+'100';

3)Symbol定义的对象属性不能使用for...in循环遍历,但是可以使用 Reflect.ownKeys来获取对象的所有键名

Symbol使用

给对象添加独一无二的属性和方法

        let game ={
            
        }
        
        //声明一个对象
        let methods={
            up:Symbol(),
            down:Symbol()
        }
        
        game[methods.up] = function(){
            console.log('向上')
        }
        game[methods.down] = function(){
            console.log('向下')
        }
        console.log(game);

前端打怪之旅=>Es6入门(运算符、Symbol)_方法调用_06

Symbol内置值

除了定义自己使用的Symbol值以外,ES6还提供了11个内置的Symbol 值!指向语言内部使用的方法。

Symbol.hasInstance

当其他对象使用instanceof运算符,判断是否为该对象的实例时,会调用这个方法

Symbol.isConcatSpreadable

对象的Symbol.isConcatSpreadable属性等于的是一个布尔值,表示该对象用于Array..prototype.concat)时,是否可以展开。

Symbol.unscopables

该对象指定了使用with关键字时,哪些属性会被with环境排除。

Symbol.match

当执行str.match(myObject)时,如果该属性存在,会调用它,返回该方法的返回值。

Symbol.replace

当该对象被str.replace(myObject)方法调用时,会返回该方法的返回值。

Symbol.split

当该对象被str.split(myObject)方法调用时,会返回该方法的返回值。

Symbol.iterator

对象进行for...of循环时,会调用Symbol...iterator方法,返回该对象的默认遍历器

Symbol.toPrimitive

该对象被转为原始类型的值时,会调用这个方法,返回该对象对应的原始类型值。

Symbol.toStringTag

在该对象上面调用toString方法时,返回该方法的返回值

Symbol.species

创建衍生对象时,会使用该属性


例子

        class Person{
            static[Symbol.hasInstance](param){
                console.log(param)
                console.log('用来检测')
                return false;
            }
        }
        
        let o = {}
        console.log(o instanceof Person);
        const arr1=[1,2,3]
        const arr2=[4,5,6]
        arr2[Symbol.isConcatSpreadable] = false
        console.log(arr1.concat(arr2))

标签:Es6,console,log,Symbol,运算符,打怪,oss,image
From: https://blog.51cto.com/u_15915681/7908933

相关文章

  • 前端打怪之旅=>Es6入门(迭代器、生成器)
    迭代器迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口!就可以完成遍历操作。ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for.of消费原生具备iterator接口的数据(可用forof遍历)ArrayArgumentsSetMapStringTyped......
  • 无涯教程-NumPy - 右移运算符函数
    numpy.right_shift()函数将数组元素的二进制表示形式向右移动指定的位置,并在左侧添加相等数量的0。importnumpyasnpprint'Rightshift40bytwopositions:'printnp.right_shift(40,2)print'\n'print'Binaryrepresentationof40:'printnp.binary_repr(......
  • 无涯教程-NumPy - 左移运算符函数
    numpy.left_shift()函数将数组元素的二进制向左移动指定位置,从右边追加等号0。importnumpyasnpprint'Leftshiftof10bytwopositions:'printnp.left_shift(10,2)print'\n'print'Binaryrepresentationof10:'printnp.binary_repr(10,width=......
  • 开课吧前端1期.阶段4-2:es6的新特性
    es6介绍:太有用了,后面会经常用到的都是ES6,不可能是ES5,ES4ES6:是简称,全称为:ECMAScript标准ECMAScript和JavaScript不是相同的一个东西ECMAScript是一个标准,JavaScript是语言一个实现可以有很多语言去实现,但是目前只有JavaScript这一种实现了ECMAScript标准【中间倒闭......
  • ES6 module模块
    概述ES6中的module指的是JavaScript模块化规范中的一种。它通过export和import语法来导出和导入模块中的变量、函数、类等内容。使用ES6模块化的好处包括:解决了模块化的问题。消除了全局变量。管理加载顺序。使用在ES6模块中,一个文件代表一个模块当使用script标签加载模块时,需要......
  • es6
    let和var的区别变量声明提升暂时性死区不允许重复声明块级作用域(函数作用域,全局作用域-用函数作用域(匿名立即执行函数表达式)代替块级作用域)不与全局对象挂钩(window,global,self,globalThis)变量的结构赋值(数组,对象-原型链上也可-包装类型也可)用途交......
  • 前端打怪之旅=>Es6入门(对象简化写法、函数)
    对象的简化写法ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法这样的书写更加简洁letname='浅辄';letchange=function(){console.log('我可以改变世界');}constschool={......
  • 无涯教程-NumPy - 按位运算符
    以下是NumPy包中可用的按位运算功能。Sr.No.描述1bitwise_and计算数组元素的按位与运算2bitwise_or计算数组元素的按位或运算3invert按位计算NOT4left_shift将二进制表示形式的位向左移动5right_shift将二进制表示形式的位向右移参考链接https://ww......
  • 七、ES6之class类
    一、class基本语法JavaScript语言中,编写一个学生类,代码如下:(prototype可以个对象添加属性和方法)functionStudent(stuno,stuname){ this.stuno=stuno; this.stuname=stuname;}Student.prototype.stusex="";Student.prototype.sayHi=function(){ console.log("大......
  • 2023_10_15_DAY_01_JAVA_SE_Java基础知识_中_变量与运算符
    2023_10_15_DAY_01_JAVA_SE_Java基础知识_中_变量与运算符标识符、关键字和保留字标识符在Java语言中,通过标识符来表示一些元素的名字,比如变量名、类名、方法名和包名等。Java中的标识符要符合下面的规则:标识符必须以字母、下划线(_)、数字或美元($)组成;标识符必须由字母、下......