iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS快速掌握ES6的class用法
  • 819
分享到

JS快速掌握ES6的class用法

2024-04-02 19:04:59 819人浏览 泡泡鱼
摘要

1.如何构造? 先复习一下es5常用的构建类的方法:首先es5的写法使用原型进行对象的方法的,为什么不在构造函数里添加方法呢?因为实例化对象的时候,会重复的建立好多相同的方法,浪费资

1.如何构造?

先复习一下es5常用的构建类的方法:首先es5的写法使用原型进行对象的方法的,为什么不在构造函数里添加方法呢?因为实例化对象的时候,会重复的建立好多相同的方法,浪费资源。所以需要把对象的方法挂载到prtotype里。

关于new和this的绑定问题,可以大概简化为:

  • 首先通过new生成一个新的对象
  • 然后让这个对象绑定到构造函数的this中去
  • 然后绑定这个构造对象的原型对象上
  • 最后把这个对象返回给前面定义的对象

那么接下来看例子吧:


fuction Animal(name,age){
  this.name = name
  this.age = age
  
  // 这样是浪费资源的
  // this.eat = function(){
  //   console.log("今天我吃饭了")
  // }
}

// 正确做法
Animal.prototype.eat=function(){
  console.log("今天我吃饭了")
}

然后上es6的class,class很明显就简化了这个操作


cosnt dog = new Animal("wanGCai",2) // 会报错,ES6为了修改陋习,和let和const一样,class不会提升.

class Animal{
  constroctor(name,age){
    this.name = name 
    this.age = age 
  }
  
    eat(){
    console.log("今天我吃饭了")
  }
}

cosnt dog = new Animal("wangcai",2)  //正确位置

另外class还添加了静态方法,set,get等操作。


class Animal{
  constroctor(name,age){
    this.name = name 
    this.age = age 
  }
  
    eat(){
    console.log("今天我吃饭了")
  }
  

 set name(value){
    this.tempname ="老铁"+value
  }
  
  get name(){
    return this.tempname
  }
  
  static introuduce(){
    console.log("我现在是一个动物类")
  }
}

//set() get()
const dog = new Animal("giao",2)
dog.name="agiao" 
console.log(dog.name) // 老铁agiao

// 静态方法
Animal.introuduce() // 我现在是一个动物类

再说继承之前补充个小知识点,class的方法名可以通过计算属性的操作来命名


let tempname = "giao"
class Animal{
   constroctor(name,age){
    this.name = name 
    this.age = age 
  }
  
  [tempname](){
    console.log("一给我咧giao")
  }
}

const xiaoagiao = new Animal("giaoge",30)
xiaoagiao.giao() // 一给我咧giao

2.继承

回到继承这个问题,es5是怎么继承的呢?


function Animal( name ){
  this.name = name
}
Animal.prototype.break(){
  console.log("叫!")
}

function Dog( name, age ){
  Animal.call(this,name)
  this.age = age
}

Dog.prototype = new Animal()
Dog.prototype.constructor = Dog

那么这个叫组合继承,怎么个组合法呢?

属性方面的继承是借用继承,可以看到Animal.call(this,name)就是相当于把Animal这个函数在Dog的构造函数里调用了一遍而已。虽然属性他们没有原型链的链式联通,但是代码拿过来给Dog都跑了一遍,所以自然就继承了Animal的name属性。


Animal.call(this,name)

方法的继承是原型式继承,众所周知,一个函数会在创建的时候生成一个原型对象,这个函数的的一个protoype属性指向他的原型对象,原型对象的constructor属性指向这个函数。如果用new来新建这个函数的实例,这个实例会有一个__proto__的属性指向函数的原型对象。所以借用函数实例会指向函数原型对象这个特性,我们将被继承的函数实例化,然后将这个实例化的对象赋给继承的构造函数的prototype属性,这样就构成了一种链式结构。但同被继承的函数实例化是不具备constructor这个属性的,我们需要将他的constructor指向继承的构造函数。


Dog.prototype = new Animal()
Dog.prototype.constructor = Dog

所以按照这个套路,我们用es5的语法,将dog函数继承了Animal函数的name和break方法.

那么ES6是怎么做的呢?


class Animal{
  constructor( name ){
    this.name = name 
  }
  
  break(){
    console.log("叫!")
    }
}

class Dog extends Animal {
  constructor( name, age ){
    super(name)
    this.age=age
  }
}

现在只需要在声明Dog类的时候加一个extends Animal,然后再在constructor构造函数里加一个super就好了。

这个super(name)就相当于Animal.call(this,name)了。然后关于方法的问题,自然就不用担心了,extends自动就处理好了,就不用再去用prototype乱指了.

以上就是js快速掌握ES6的class用法的详细内容,更多关于JS ES6的class用法的资料请关注编程网其它相关文章!

--结束END--

本文标题: JS快速掌握ES6的class用法

本文链接: https://www.lsjlt.com/news/125194.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS快速掌握ES6的class用法
    1.如何构造? 先复习一下es5常用的构建类的方法:首先es5的写法使用原型进行对象的方法的,为什么不在构造函数里添加方法呢?因为实例化对象的时候,会重复的建立好多相同的方法,浪费资...
    99+
    2022-11-12
  • 快速掌握VueRouter使用方法
    目录一、编程式路由导航二、缓存路由组件三、两个新的声明周期钩子四、路由守卫五、路由器的两种工作模式本篇博客会介绍Vue中的VueRouter的基本使用,编程式路由导航增加了我们进行路...
    99+
    2023-01-09
    Vue Router用法 Vue Router原理
  • 快速掌握Fedora 17的方法详解
    要快速掌握Fedora 17,可以按照以下步骤进行:1. 下载和安装Fedora 17:首先,您需要从官方网站上下载Fedora 1...
    99+
    2023-09-23
    Fedora
  • 快速掌握Node.js中setTimeout和setInterval的使用方法
    Node.js和js一样也有计时器,超时计时器、间隔计时器、及时计时器,它们以及process.nextTick(callback)函数来实现事件调度。今天先学下setTimeout和setInterval...
    99+
    2022-06-04
    使用方法 快速 Node
  • Python如何快速上手? 快速掌握一门新语言的方法
    那么Python如何快速上手?找来了一篇广受好评的新语言学习方法介绍,供大家参考。 听说,你决定要为你的 “技能树” 再添加一门特定的编程语言。那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术...
    99+
    2022-06-04
    快速 一门 上手
  • 快速掌握LeetCode算法题解的方法与技巧
    LeetCode是一个著名的算法题库,由于其题目难度较高,很多人在刷题的时候会遇到各种困难。本文将分享一些快速掌握LeetCode算法题解的方法与技巧,希望能够帮助大家更好地刷题。 一、刷题技巧 1.1 利用题目标签 LeetCode的题目...
    99+
    2023-06-27
    windows numpy leetcode
  • 快速掌握SpringBoot应用的启动入口
    目录1、一切的开始2、总结 Springboot可以说是Java程序员必备技能了,大家都知道Springboot最终可以通过maven打成jar包,然后直接使用java -jar命令...
    99+
    2022-11-13
  • Python中快速掌握Data Frame的常用操作
    目录掌握Data Frame的常用操作一. 查看DataFrame的常用属性 二. 查改增删DataFrame数据三. 描述分析DataFrame数据 掌握Data Frame的常用...
    99+
    2022-11-12
  • 快速掌握Node.js环境的安装与运行方法
    安装程序 NodeJS 提供了一些安装程序,都可以在 nodejs.org 这里下载并安装。 Windows 系统下,选择和系统版本匹配的 .msi 后缀的安装文件。Mac OS X 系统下,选择 .pkg...
    99+
    2022-06-04
    快速 环境 方法
  • 由浅入深快速掌握Java 数组的使用
    目录1.数组定义格式1.1 数组概述1.2 什么是数组1.3 数组的定义格式:2.数组初始化之动态初始化2.1 数组初始化概述2.2 数组初始化方法3.数组元素访问3.1 数组元素访...
    99+
    2022-11-13
  • 快速掌握Go语言HTTP标准库的实现方法
    目录HTTP clientClient 结构体初始化请求NewRequest 初始化请求Request准备 http 发送请求Transport获取空闲连接 queueForIdle...
    99+
    2022-11-11
  • 一文快速掌握Java中的搜索算法和排序算法
    目录一、搜索算法二分算法二、排序算法冒泡排序选择排序插入排序快速排序一、搜索算法 二分算法 二分算法(Binary Search)又称折半查找,是一种高效的查找算法。它的基本思想是:...
    99+
    2023-05-14
    Java搜索算法 Java排序算法 Java算法
  • 如何快速掌握Java中的搜索算法和排序算法
    这篇文章主要介绍“如何快速掌握Java中的搜索算法和排序算法”,在日常操作中,相信很多人在如何快速掌握Java中的搜索算法和排序算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何快速掌握Java中的搜索算...
    99+
    2023-07-05
  • Java日志路径教程:快速掌握正确的设置方法!
    在Java开发中,日志是非常重要的,它可以记录应用程序的运行状态和异常信息,帮助开发人员快速定位问题。然而,如果日志路径设置不正确,会导致日志文件无法生成或者丢失,给开发人员带来很大的困扰。本文将介绍Java日志路径的设置方法,帮助读者快...
    99+
    2023-10-17
    日志 教程 path
  • 如何快速掌握B端项目的设计思路和方法
    本篇内容介绍了“如何快速掌握B端项目的设计思路和方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言B ...
    99+
    2022-10-19
  • 快速掌握Go语言中使用NumPy对象的技巧
    Go语言是一种强类型编程语言,它的语法简单易懂,同时还拥有快速编译和高效运行的特点。在Go语言中,使用NumPy对象可以帮助我们更加高效地进行科学计算和数据分析。本文将介绍如何,并且会穿插一些演示代码。 导入NumPy包 在使用NumP...
    99+
    2023-08-28
    numpy 对象 教程
  • 带你快速入门掌握Spring的那些注解使用
    目录一、前言二、基本介绍三、非全注解开发1、第一组注解2、第二组注解3、第三组注解四、完全注解开发1、第一组注解2、第二组注解五、总结一、前言 这是spring专栏的第三篇文章,是关...
    99+
    2022-11-13
  • 学习Go语言的技巧和方法,快速掌握编程技能
    学习一门编程语言是现代社会中越来越重要的技能之一。Go语言作为一种相对年轻但非常受欢迎的编程语言,它具有简洁、高效和可扩展的特点,因此对于想要提升自己的编程能力的人来说,学习Go语言是一个不错的选择。本文将介绍如何高效学习Go语言,轻松掌握...
    99+
    2023-12-30
    编程技能 Go语言学习 高效学习
  • Java快速入门掌握类与对象及变量的使用
    目录类1.什么是类2.想要知道Java中类是什么3.怎么写一个类对象1.什么是对象2.创建对象的格式3.怎么使用对象中的属性4.怎么使用对象中的行为5.实例变量1.什么是局部变量2....
    99+
    2022-11-13
  • 技术分享 | 快速掌握 MySQL 8.0 认证插件的使用
    引言 MySQL 8.0.15 版本主从复制时,io 线程一直处于 connecting 状态, 由于复制用户使用的认证插件是 caching_sha2_password,而想要通过 caching_sha2_password 认证的用户...
    99+
    2016-08-05
    技术分享 | 快速掌握 MySQL 8.0 认证插件的使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作