模板字符串
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();