允许按照一定的模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。
频繁使用对象方法、数组元素,就可以使用解构赋值形式。
// 1.数组解构
var [a, b, c] = [1, 2, 3];
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
// 2.对象解构
var { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
var {x = 3} = {};
x // 3
var {x, y = 5} = {x: 1};
x // 1
y // 5
var {x:y = 3} = {};
y // 3
var {x:y = 3} = {x: 5};
y // 5
在ES6中,可以使用 ·· 来引住字符串,模板字符串的特点
1.字符串中可以出现换行符
2.可以使用模板字符串直接对变量进行拼接 在 ·· 中使用 ${变量名} 来完成拼接
let str = `今天天气
突然转凉`
console.log(str)
let day = "今天";
let str = "天气不好";
console.log(day + str + "记得加一");
console.log(`${day}${str}记得加一`);
`
${day}
${str}
`
function createUser(loginId, loginPwd, nickName) {
const say = function() {
console.log(loginId, nickName)
}
return {
loginId, //1.属性简写
loginPwd,
nickName,
say, //2.方法简写
fun() { //方法速写,不是箭头函数
console.log(this.loginId)
},
// "fun" : function(){
//
// }
}
}
const user = createUser("01", "123456", "abc")
console.log(user)
// 3.计算属性名
const prop1 = "name";
const prop2 = "age";
const prop3 = "say";
const user = {
[prop1]: "周老师",
[prop2]: 30,
[prop3]() {
console.log(this[prop1], this[prop2])
}
}
console.log(user)
class Person {
constructor(name, job, age, sex) {
this.job = job;
this.name = name;
this.age = age;
this.sex = sex;
}
print() {
console.log('原型方法');
console.log(`姓名:${this.name} 工作:${this.job} 年龄:${this.age} 性别:${this.se
}
}
const p1 = new Person('柯南', '侦探', '36', '男');
p1.print()
// 类的声明不会被提升和let const 一样,有暂时性死区
// 类的所有代码全部是在严格模式下进行的
// 类的所有方法不可被枚举
// 类的所有方法不能当构造函数使用
//类的构造器必须使用new来调用
// es6之后 new.target进行半盘是否使用new关键字调用
function Person(firstName,lastName){
// 加判断
console.log(new.target)
if(new.target === undefined){
throw new Error("该函数必须使用new调用")
}
this.firstName = firstName;
this.lastName = lastName;
this.fullName = `${firstName}${lastName}`;
}
const p1 = new Person("张","三")
console.log(p1)