ES6 面向对象 VS ES5 面向对象(伪)

计算机语言发展简史

机器语言(0和1,面向硬件)

汇编语言(英文单词)

低级语言(相比高级语言更加接近计算机的底层,如c语言,面向过程/函数,以函数为单位进行功能的数据和方法的封装)

高级语言(不直接操作计算机的底层,如js、java、python,面向对象,将针对某一功能的方法、数据封装到对象中)

模块系统(封装许许多多的对象)

框架(封装许许多多的模块)

系统接口(API)

ES5面向对象(伪面向对象,假的)

存在的问题:没有统一的写法

1 . 类的声明方法

这是一种写法:

//没有专门的类声明方法,以函数的形式来写类
function Person(name,age){//1.既是构造函数又是类
  this.name = name;
  this.age = age; 
 }
 //给类添加方法
Person.prototype.showName = function(){//2.方法独立在类之外
	console.log(this.name);
 }
Person.prototype.showAge = function(){
	console.log(this.age);
}
let p = new Person('yinzhiyuan',12);
p.showName();
p.showAge();

在这里插入图片描述
还有一种写法,虽然会有问题,但也能实现功能

//没有专门的类声明方法,以函数的形式来写类
function Person(name,age){//1.既是构造函数又是类
 this.name = name;
 this.age = age; 
 //给类添加方法
 this.showName = function(){//2.方法写在类里
   console.log(this.name);
 }
 this.showAge = function(){
   console.log(this.age);
 }
}
let p = new Person('yinzhiyuan',12);
p.showName();//yinzhiyuan
p.showAge();//12

当使用两种写法的代码混在一起,看起来混乱,不方便阅读

2.实现继承父类的属性和方法

function Person(name,age){//1.既是构造函数又是类
 this.name = name;
 this.age = age; 
 //给类添加方法
 this.showName = function(){//2.方法在类里
   console.log(this.name);
 }
 this.showAge = function(){
   console.log(this.age);
 }
}
function Worker(name,age,job){
  Person.call(this,name,age);//this是Worker对象,实现父类属性的继承
  this.job = job;//加上自身的属性
}
Worker.prototype = new Person();//将父类Person的实例作为Worker的原型,来继承父类的方法
Worker.prototype.constructor = Worker;//修正Worker的构造方法
Worker.prototype.showJob = function(){//添加自己的方法
  console.log(this.job);
}
let w = new Worker('dada',12,'singer');
w.showName();
w.showJob();

在这里插入图片描述
还有其他的写法,看起来很乱

ES6面向对象(真的)

提供了4个新的关键字,用于解决上面的问题,统一写法

  • class:类声明
  • constructor:构造函数/构造器
  • extends:继承
  • super:超类/父类

1 . 类的声明方法

 //有单独的类的声明和构造函数的声明
class Person{//类
  constructor(name,age){//构造函数
    this.name = name;
    this.age = age;
  }
  showName(){
    console.log(this.name);
  }
  showAge(){
    console.log(this.age);
  }
}
let p = new Person('yinzhiyuan',18);
p.showName();
p.showAge();

在这里插入图片描述
2.实现继承父类的属性和方法

//有单独的类的声明和构造函数的声明
class Person{//类
  constructor(name,age){//构造函数
    this.name = name;
    this.age = age;
  }
  showName(){
    console.log(this.name);
  }
  showAge(){
    console.log(this.age);
  }
}
class Worker extends Person{//继承关键字extends
  constructor(name,age,job){
    super(name,age);//超类/父类 直接继承父类的属性
    this.job = job;//加上自身的属性
  }
  //只要用了extends关键字来实现继承,会自动继承父类的方法
  //加上自身的方法
  showJob = function(){
    console.log(this.job);
  }
}
let w = new Worker('dd',13,'dancer');
w.showName();
w.showJob();

在这里插入图片描述
好处:写法统一,更加简洁方便

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值