类定义
类方法被自动写在原型对象上
class Person {
// 类属性
name = '张三';
// 构造方法
constructor() {
console.log("自动调用....");
};
// 类方法
say() {
return `我叫${this.name}`;
}
}
var p1 = new Person();
console.log(p1);
/*
发现实例化类对象打印出来没有包含类方法,在其原型对象上
Person
name: "张三"
[[Prototype]]: Object
constructor: class Person
say: ƒ say()
[[Prototype]]: Object
*/
console.log(p1.say());//我叫张三
构造方法constructor()传参,类属性可以不写死,而在new实例化的时候传入具体的值
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
say() {
return `我叫${this.name},今年${this.age}岁`;
}
}
var p1 = new Person("张三", 18);//new的时候给构造函数传参数
console.log(p1);
/*输出:Person
age: 18
name: "张三"
[[Prototype]]: Object
constructor: class Person
say: ƒ say()
[[Prototype]]: Object
*/
console.log(p1.say());//我叫张三,今年18岁
类继承
子类继承自父类的方法没有值
我叫undefined,今年undefined岁,是个男生
解决:通过super把值传到父类的构造方法constructor()中
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
say() {
return `我叫${this.name},今年${this.age}岁`;
}
}
class Boy extends Person {
// constructor(name, age, sex) {
// super(name, age);
// this.sex = sex;
// }
show() {
return `我叫${this.name},今年${this.age}岁,是个${this.sex}生`;
}
}
var b1 = new Boy("张三", 18, "男");
console.log(b1);
console.log(b1.show()); //我叫张三,今年18岁,是个男生
*extends就是"继承自"的意思,
*super是给父类传参,写在子类的constructor()中,其形参是父类的参数
本文介绍了JavaScript ES6中的类定义,包括类方法如何自动放置在原型对象上,以及如何在构造方法constructor中通过传参动态设置类属性。此外,还探讨了类继承的问题,当子类继承自父类时,如何通过super关键字将值传递给父类的构造方法以正确初始化实例。
5603

被折叠的 条评论
为什么被折叠?



