今天的码农女孩总结了ES6的Symbol数据类型和面向对象扩展的笔记

Symbol数据类型
es5的对象属性名都是字符串类型,这容易造成属性名冲突,Symbol数据类型会保证值的唯一性
数据类型:数字(number),布尔(Boolean),字符串(String),null,undefined,Symbol,BigInt,对象Object
定义
var s=Symbol("asd")
主要用来让对象的属性不冲突
        //第一种
        var obj={}
        var sm=Symbol("schl")
        obj[sm]="清华大学"
        console.log(obj)//{Symbol(schl): '清华大学'}

        //第二种
        var sm=Symbol("schl")
        var obj={[sm]:"哈工大"}
        console.log(obj)//{Symbol(schl): '哈工大'}

        //第三种
        var obj={}
        var sm=Symbol("schl")
        Object.defineProperty(obj,sm,{value:"黑龙江大学"})
        console.log(obj)//{Symbol(schl): '黑龙江大学'}
属性和方法
for()如果有Symbol值,则返回,没有则新建
keyfor()返回Symbol的for函数的值
replace()替换Symbol的值
match()查找Symbol的值
split()分割Symbol的值
toString()转化成字符串


面向对象扩展
定义对象用class声明,让js更接近于后台语言的写法,但是class是声明的语法糖,而对象本身和ES5的对象没有区别
       class Person{//class声明对象
            constructor(name,age){//构造器
                this.name=name//this调用属性和方法
                this.age=age
            }
            say(){//方法可以简写
                console.log(this.name+","+this.age)
            }
        }
        var p=new Person("wei",20)
        console.log(p)
        p.say()
注意:class的定义默认使用了严格模式,所有无需自己在手动添加
class声明的对象没有变量提升
var p=new Person("wei",20)
console.log(p)//报错
class Person{}
对象的私有属性:
不用this关键字引用,建议“#”声明
    class Point{
            #x=2;
            constructor(y){
                this.y=y
            }
   }
对象的私有方法:
不用this关键字引用,建议“_”声明
   class Point{
            say(){
                console.log(this.y)//公有
            }
            _fun(){
                console.log("ffff")//私有
            }
        }
静态属性和静态方法
用static修饰静态,当被定义成静态属性和方法时,不能被实例继承,并且可以直接通过类调用该属性和方法
静态属性:
       class Emp{
            name="lisi"//方法1
            static age=23//方法2
            constructor(x){
                this.x=x
            }
        }
        console.log(Emp.age)//23没new对象之前就可以调用
静态方法:
      class Emp{
            static fun1(){
                console.log("静态方法")
            }
            fun2(){
                console.log("普通方法")
            }
        }
        Emp.fun1()//静态方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值