类的共有属性放在constructor里面
- 模板字符字面量
用 反引号 ``
const str = `hell
world`;
这种打印出来的 是包含换行符的,就是字符串内部不需要再使用/n换行
const name = 'tom';
const msg = `hey, ${name} --- ${1 + 2} --- ${Math.random()}`;
${可以跟任意js的规范语句}引入name值
- 模板字符串标签函数
ES6中的类和对象
创建类和对象
- 创建类 class
class Star {
constructor(uname, age) {
this.uname = uname;
this.age = age;
}
}
- 利用类创建对象 new
var ldh = new Star('刘德华', 18);
var xxy = new Star('张学友', 20);
console.log(ldh);
console.log(zxy);
- 注意点
- 通过class关键字创建类,类名我们还是习惯定义首字母大写
- 类里面有个constructor函数,可以接受传递过来的参数,同时返回实例对象
- constructor函数,只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数
- 生成实例,new不能省略
- 最后注意语法规范,创建类,类名后面不要加小括号,生成实例,类名后面要加小括号,构造函数不需要加function
类中添加(共有)方法
创建一个明星类
class Star {
constructor(uname, age) {
this.uname = uname;
this.age = age;
}
//添加方法
sing() {
console.log('唱歌');
}
- 注意点
- 类里面所有的函数不需要写function
- 多个函数方法之间不需要添加逗号分隔
//调用类里面的方法
//当然往里面传递参数
ldh.sing('冰雨');
zxy.sing('李香兰');
传参(完整代码体现)
<script>
class Star {
constructor(uname, age) {
this.uname = uname;
this.age = age;
}
sing(song) {
console.log(this.uname + '唱歌唱的是' + song);
}
}
var ldh = new Star('刘德华', 18);
var zxy = new Star('张学友', 20);
console.log(ldh);
console.log(zxy);
ldh.sing('李香兰');
</script>
类的继承
子类可以继承父类的一些属性和方法
语法:
class Father{ //父类
}
class Son extends Father{ //子类继承父类
}
代码示例:
正确的应该是这样:
<script>
class Father {
constructor(x, y) {
this.x = x;
this.y = y;
}
sum() {
console.log(this.x + this.y);
}
}
class Son extends Father {
constructor(x, y) {
super(x, y);
}
}
var son = new Son(1, 2);
console.log(son);
</script>
super关键字用于访问和调用对象父类上的函数
可以调用父类的构造函数,也可以调用父类的普通函数
super关键字调用父类普通函数
继承中的属性或者方法查找原则:
(就近原则)
- 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的
- 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法
super.say() 就是调用父类中的普通函数 say()