面向对象-基础(ES5与ES6对比)

本文探讨了ES5和ES6中面向对象的差异。在ES5中,类和构造函数相似,属性和方法需分开定义,且详细阐述了继承的实现。而ES6引入了`class`关键字和构造器,允许直接在类内定义方法,使用`super`进行超类调用。此外,类在React组件化中的应用也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ES5的面向对象

1、概括:类和构造函数一样

2、属性和方法分开写的

3、具体案例讲解

//定义一个类(构造函数)
function User(name, pass) { 
    this.name = name
    this.pass = pass
}

在js中,每个构造函数都有一个原型属性prototype,因为这个属性的值通常是一个对象,又叫原型对象!通常在这个原型对象中,会包含一个constructor属性指向该原型对象的构造函数。

//定义构造函数user的原型方法
User.prototype.showName = function () {
    console.log(this.name)
}
User.prototype.showPass = function () {
    console.log(this.pass)
}

var u1 = new User('able', '1233')
u1.showName()
u1.showPass(

运行结果如下:
在这里插入图片描述

4、面向对象的继承

定义一个新方法VipUser
function VipUser(name, pass, level) {
    User.call(this, name, pass)// *(改变this的指向)把this指向User使用,也就是User对象代替this对象。那么 VipUser中不就有User的所有属性和方法了吗,VipUser对象就能够直接调用User的方法以及属性了。*
    
    this.level = level
}
VipUser.prototype = new User()
VipUser.prototype.constructor = VipUser
VipUser.prototype.showLevel = function () {
    console.log(this.level)
}

var v1 = new VipUser('cuicui', '888888', 10)
v1.showName()
v1.showLevel()

代码运行结果:
在这里插入图片描述

二、ES6的面向对象

1、有了 class 关键字、构造器

2、class 里面直接加方法

class User {
    constructor(name, pass) {
        this.name = name
        this.pass = pass
    }

    showName() {
        console.log(this.name)
    }
    showPass() {
        console.log(this.pass)
    }
}

var u1 = new User('douxiaobao', '666666')
u1.showName()
u1.showPass()

运行结果:
在这里插入图片描述

3、继承,super 超类==父类

class VipUser extends User {
    constructor(name, pass, level) {
        super(name, pass)
        // *因此,如果我们在继承类中构建了自己的构造函数,我们必须调用super,因为如果不这样的话this指向的对象不会被创建。并且会收到一个报错。*

		//正确的写法;需要在使用this之前调用super()

        this.level = level
    }
    showLevel(){
    	console.log(this.name)
        console.log(this.level)
    }
}

v1 = new VipUser('cuicui', '123456', 10)
v1.showLevel()

运行结果:
在这里插入图片描述
类的应用 — React组件化,一个组件就是一个 class,用于构建用户界面的 JavaScript 库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值