面向对象-类篇

本文详细介绍了JavaScript中的类,包括类的声明、实例化、构造函数、类的方法以及类的继承。强调了在类中使用方法的注意事项,如需使用`this`关键字。还探讨了类的本质,指出类实际上是一个函数,并且类的实例具有原型链。最后,文章讨论了继承的重要性,如何通过原型继承和借用构造函数实现数据共享,以解决属性和方法问题。

1. 类classES6

  1. ES6中新增加了类的概念,可以使用class关键字声明一个类,之后以这个类来实例化对象。
  2. 类抽象了对象的公共部分,它泛指某一大类(class)。
  3. 对象特指某一个,通过类实例化的一个具体的对象。

2. 创建类

  1. 语法: 关键字 类名{}
  2. 构造函数:constructor()方法是类构造函数,用于传递参数,返回实例对象。
    通过new命令生成对象实例时,自动调用该方法,如果没有定义,类内部会自动给我们创建一个constructor()构造函数中可以传递参数。
  3. 类中的方法:方法名(){}
    a). 类中的方法不需要加function
    b). 多个方法之间不需要逗号分隔
    c). 方法中可以传递参数
  4. 通过类实例对象: var 对象名 = new 类名()
    class  Person{
    	constructor(name, age) {
    		this.name = name
    		thia.age = age
    	}
    	sayHolle(mag) {
    		console.log('大家好我是' + msg)
    	}
    }
    
    const p = new Person('张三', 18)
    

3. 类的继承(extends

  1. 关键字:extends 用于子类继承父类
    继承语法: class 子类 extends 父类{}
  2. 关键字:super 用于调用父类的构造函数和普通函数
    在子类构造函数中调用父类构造函数:super();可以传参数,必须写在子类构造函数的第一行; 在子类的函数中调用父类的函数:super.父类函数名();
    // 父类
    class Fu {
    	constructor(name) {
    		this.name = name
    	}
    }
    // 子类继承父类
    class Zi extends Fu{
    	constructor(name, age) {
    		super(name)  
    		this.age= age
    	}
    }
    

4. 使用类注意事项

  1. ES6中没有变量提升,所以必须先定义类,才能通过类实例化对象。
  2. 在类里面的使用共有属性和方法,一定要加this使用。
  3. constructor里面的的this指向实例对象,方法里面的this指向这个方法的调用者

5. 类的本质

  1. 类的本质其实就是一个函数,也可以简单的认为类就是构造函数的另外一种写法
  2. 类有原型对象prototype
  3. 类原型对象prototype里面的constructor指向类本身
  4. 类的所有方法都定义在类的prototype属性上,类也可以通过原型添加方法
  5. 类的实例化对象里面也有_proto_原型,它指向类的原型对象prototype

6. 继承

  1. 继承:类与类之间的关系,面向对象的语言的继承是为了多态服务的, js不是面向对象的语言,但是可以模拟面向对象.
  2. 模拟继承.为了节省内存空间
  3. 原型作用: 继承(数据共享) 目的是:为了节省内存空间
  4. 原型继承:改变原型的指向
  5. 借用构造函数继承:主要解决属性的问题
    格式:被借用的构造函数名.call(this,形参)
  6. 组合继承:原型继承+借用构造函数继承,既能解决属性问题,又能解决方法问题
  7. 拷贝继承:就是把对象中需要共享的属性或者犯法,直接遍历的方式复制到另一个对象中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值