一. let定义变量
使用let声明变量可以重新赋值,但是不能在同一作用域内重新声明(在函数体内不能重复声明)let 也没有变量提升,预解析的概念
<script>
let a = 1;
console.log(a); //显示 1
function age() {
let a = 2
console.log(a); //显示 2
// let a = 3 //在次声明let变量 就会报错
}
age();
</script>
二.const定义常量
使用const定义常量必须赋值初始化,一个页面只能声明一个常量,常量可以不常受函数作用域的影响,常量定义了不可在改变,改变就会报错,const也没有变量提升,预解析的概念
<script>
const con = 1;
// const con = 2; //报错 页面上只常量不能冲突不然报错
function fn() {
console.log(con); //显示1 常量不受作用域影响
}
fn()
</script>
三.模板字符串
模板字符串,作为es6新增语法 ,用法是 两个单引号 将整个字符串包起来,其中使用 ${}来包裹一个变量或者一个表达式,常量等等.....
<script>
let a = 10;
let b = 20;
let c = `a变量等于${a}b变量等于${b}`;
console.log(c); //输出结果 :a变量等于10b变量等于20
</script>
四.解析结构
1.解析数组
数组以序号--对应的,按有序的对应关系进行解析结构
<script>
let row = [1, 2, 3]; //定义变量
let [a, b, c] = row; // 解析结构 方式解析数组
console.log(a); // 输出结果 :1
console.log(b); // 输出结果 :2
console.log(c); // 输出结果 :3
</script>
2.解析对象
对象以属性名一一对象属性值 , 和解析结果数组一样
<script>
let obj = {aaa: 10,bbb: 20,ccc: 30}; //创建一个 对象
let {aaa,bbb,ccc} = obj; // 解析机构 对象只能解析键值对
//也就是解析对象只能是 键名
console.log(aaa); // 10
console.log(bbb); //20
console.log(ccc); //30
//解析结构设置别名
let {aaa:name,bbb:age,ccc:sex} = obj; //
console.log(name); // 10
console.log(age); //20
console.log(sex); //30
</script>
五.箭头函数
1.箭头函数里面没有this指向,箭头函数的this指向上下文的this值作为this指向,如果没有则指向window对象
<script>
//写法
//箭头函数 没有函数名 只能通过赋值给一个变量 在调用这个变量触发函数
let row = (con) => {
console.log(con);
}
row(10);
</script>
六.Class类
Class类的概念是ES6中增加的语法,可以使用Class关键词声明一个类,之后以这个类来实例化对象,类抽取了对象的公共部分,它泛指某一大类对象特指某一个,通过类实例化一个具体的对象
class类对于初学者来说很难理解,比如为什么需要用class类 为什么 class 和对象 一样 拥有属性和方法 直接写对象不好吗? 我在这里一样解释一下 : class类可以说就是对象的升级版 主要用法 就更清楚,更明白的 开发面向对象程序,为什么需要面向对象开发? ,面向对象开发 更清晰可见,方便维护,不会因为一个地方出错整个程序奔溃掉,
<script>
class Str {
constructor(name, age) { //construct函数就相当于 对象属性
this.name = name;
this.age = age;
}
sex() { //sex()函数相当于 对象方法
console.log('男');
}
status() { // status()函数相当于 对象方法
console.log('200');
}
}
const st = new Str('张三', 44); //通过new关键字创建 st实例化对象
console.log(st); //{name: "张三", age: 44} // 输出st实例化对象
console.log(st.name); //张三 //调用st实例化对象 下面的name属性
console.log(st.age); // 44 //调用 st实例化对象 下面的age属性
st.sex() //男 //调用 st实例化对象 下面的 sex方法
st.status() //200 //调用 st实例化对象 下面的 status方法
</script>
1.通过class关键词创建类,类名尽量大写
2.类里面有给constraint函数,可以接收传递过来的参数,同时返回实例对象
3.construct函数 只要 new 生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
4.多个函数方法之间不需要添加逗号分隔
5.生成实例 new 不能省略
6.语法规范 创建类 类名后面不要加小括号,生成实例,类名后面加小括号,构造函数不需要加function
七.类的继承 extends
1.使用 extends 关键字 继承类 父类的所以的方法 , 方法都在原型
2.使用 super 关键词继承类的属性
<script>
class Str {
constructor(name, age) { //construct函数就相当于 对象属性
this.name = name;
this.age = age;
}
sex() { //sex()函数相当于 对象方法
console.log('男');
}
status() { // status()函数相当于 对象方法
console.log('200');
}
}
const st = new Str('张三', 44); //通过new关键字创建 st实例化对象
console.log(st); //{name: "张三", age: 44} // 输出st实例化对象
console.log(st.name); //张三 //调用st实例化对象 下面的name属性
console.log(st.age); // 44 //调用 st实例化对象 下面的age属性
st.sex() //男 //调用 st实例化对象 下面的 sex方法
st.status() //200 //调用 st实例化对象 下面的 status方法
//类的继承
class Row extends Str { // 子类Row继承父类 Str 的方法
constructor(name, age, role) {
super(name, age); //使用super 继承父类的属性 必须写在this前面
this.role = role;
}
}
var son = new Row('张三', 18, '男');
console.log(son); // Row {name: "张三", age: 18, role: "男"}
son.sex(); //男
son.status(); // 200
</script>
发表评论