ES6(模块字符串和Symbol)

模板字符串

ES5标准中一般输出模板是通过字符串拼接的方式进行的。在ES6中可以通过模板字符串简化字符串的拼接,模板字符串是通过反引号" `` “(Esc下面的键)来表示,如果要嵌入变量通过”${变量名}"来实现。

例如:

let arr = [
    {
        name: "张三",
        age: 18
    },
    {
        name: "李四",
        age: 19
    },
    {
        name: "王五",
        age: 20
    }
]

let str = "";

for(let i=0;i<arr.length;i++){

    str += `姓名是:${arr[i].name} \t 年龄是:${arr[i].age} \n`
}

console.log(str);

Symbol

ES5中提供了6种数据类型:number,string,boolean,null,undefined和object。ES6新增了以种数据类型Symbol来表示唯一的值,每个创建的Symbol都是唯一的,这样在实际应用中可以创建一些唯一的属性和定义私有变量。

let s1 = Symbol;    //直接创建

let s2 = Symbol("123");    //传入字符串创建

1、利用Symbol作为属性名,属性名不会被Object.keys()、Object.getOwnPropertyNames()、for…in循环返回。例如:

let obj = {
    [Symbol()]: "张三",
    age: 20,
    height: "178cm"
}

for(const key in obj){
    console.log(key);    //输出结果是:age,height
}

let keys = Object.keys(obj)    //获取obj对象的所有属性

console.log(keys);    //输出结果为:[ 'age', 'height' ]

let names = Object.getOwnPropertyNames(obj);

console.log(names);

2、可以在类中利用Symbol来定义私有属性及方法。

let People = (
    function(){
        let name = Symbol("name");
        class People{
            constructor(yourname){
                this[name] = yourname;    //name就是People的私有变量
            }
            sayName(){
                console.log(this[name]);
            }
        }
        return People;
    }
)();

let zhangsan = new People("张三");

console.log(zhangsan[Symbol("name")]);    //访问类的私有变量

zhangsan.sayName();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值