发布时间:2024-10-21 14:01
目录
前言
一、类的定义(class)
语法:
创建实例:
举例:
二、给类添加方法
举例:
三、类的继承(extends、调用super())
举例:
1.继承父类普通属性
2.调用父类的构造函数
3.调用父类的普通函数
四、私有属性的获取
语法:
举例:
JavaScript 语言中,生成实例对象的传统方法是通过构造函数,ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。
使用class关键词 声明类,constructor为构造方法,一个类必须有constructor()方法,如果没有显式定义,一个空的constructor()方法会被默认添加,this关键字则代表实例对象。
注意:不需要在使用function(){}
基本语法
class Name {
}
var p1 = new name();//p1是自己取的
class UserName{
constructor(uname,age){
this.uname=uname;
this.age = age;
}
}
var xm=new UserName('小明',18);
console.log(xm.uname ,xm.age);
需要将填加的东西直接放入,定义的类中
class UserName{
constructor(uname,age){
this.uname=uname;
this.age = age;
}
sing(song){
console.log('唱歌');//直接调用
console.log(this.uname+song);//使用函数传递参数
}
}
var xm=new UserName('小明',18);
console.log(xm.uname ,xm.age);
xm.sing('中国');
Class 可以通过extends关键字实现继承,让子类继承父类的属性和方法。
ES6 规定,子类必须在constructor()方法中调用super(),否则就会报错。
父类:
class Fsther {
constructor(){
}
money(){
console.log(100);
}
}
子类:
class Son extends Fsther{
}
var son = new Son();//给子类实例化
son.money();//可以获取父类的内容
父类:
class Fsther {
constructor(x,y){
this.x=x;
this.y=y;
}
addition(){
console.log(this.x+this.y);
}
}
子类:
class Son extends Fsther{
constructor(x,y,z){
super(x,y);//获取父类的构造函数,super必须在子类使用this前,调用父类
this.z=z;//子类的添加
}
}
var son = new Son(1,2,5);
son.addition();
console.log(son.z);//获取子类所添加的内容
//在实际开发中,可以通过调用来节省时间,在调用的基础上增加,所需要的内容。
父类:
class Fsther {
say(){
return '我是小明';
}
}
子类:
class Son extends Fsther{
say(){
console.log(super.say()+'的儿子');
}
}
var son = new Son();
son.say();
#p=1;
getp(){
return this.#p;
}
class Fsther {
#money=10000 //设置私有属性
getMoney(){ //获取私有属性
return this.#money;
}
}
class Son extends Fsther{
}
var son = new Son();
var f = new Fsther();
f.getMoney();
console.log(f.getMoney());
console.log(son.getMoney());