ES6 class 类

简介: 【7月更文挑战第27天】

普通使用原型添加方法
function Animal(name) {
this.name = name;
}

Animal.prototype.speak = function() {
console.log(this.name + ' makes a noise.');
};

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

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.speak = function() {
console.log(this.name + ' barks.');
};

const dog = new Dog('Rex');
dog.speak(); // 输出:Rex barks.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
使用class添加方法
class Animal {
constructor(name) {
this.name = name;
}

speak() {
console.log(this.name + ' makes a noise.');
}
}

class Dog extends Animal {
speak() {
console.log(this.name + ' barks.');
}
}

const dog = new Dog('Rex');
dog.speak(); // 输出:Rex barks.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
对比下来,不难发现class类添加方法代码更加易懂,易读,也有好的继承特性,后续更加容易维护;

注意事项:
类并不会被提升;(意味着在代码执行之前,类声明不会被移动到作用域的顶部。这与传统的函数声明和变量声明不同,它们可以在作用域内被提升。因此,在使用类之前必须先声明类,否则会导致引用错误。)
class 是一等公民(first-class);意味着它们可以像其他值一样被传递和使用。你可以将类赋值给变量,将类作为函数参数传递,从函数中返回类,以及在运行时动态地创建类。这使得类在 JavaScript 中更具灵活性,可以更方便地进行模块化和编程。
类必须在严格模式下运行,类和里面模块默认必须使用严格模式书写

网络点点滴
关注

0

0

0

专栏目录
ES6 Class类
qq_53559311的博客
486
在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。class 的本质是 function。它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。类不可重复声明类定义不会被提升,这意味着必须在访问前对类进行定义,否则就会报错...
JavaScript ES6 Class类实现原理详解
10-15
主要介绍了JavaScript ES6 Class类实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ES6 class类
weixin_53596260的博客
219
ES6 Class类
Es6Class类与原型
q515518的博客
463
Es6Class类以及原型
ES6深入—ES6 Class 类
weixin_44009656的博客
469
本文介绍了 ES6 Class 的 ES6 类的定义及使用的 constructor() 方法、Class 表达式和 super 关键字。
es6 class 类的基础用法
heheheyyy的博客
1837
概述: 在Es6中,class(类)作为对象的模板被引入,可以通过class关键字定义类。class的本质是function。 它可以看做是一个语法糖,让对象原型的写法更清晰,更向面向对象的语法 类声明: ES6 中,prototype 仍旧存在,虽然可以直接自类中定义方法,但是其实方法还是定义在 prototype 上的。 覆盖方法 / 初始化时添加方法 class Example { constructor(a) { //constructor 方法是类的默认方法,创建类的实例化对象时被
ES6 class类链式继承,实例化及react super(props)原理详解
10-15
主要介绍了ES6 class类链式继承,实例化及react super(props)原理,结合实例形式详细分析了ES6 中class类链式继承,实例化及react super(props)原理相关概念、原理、定义与使用技巧,需要的朋友可以参考下
ES6中class类用法实例浅析
08-30
在ES6中,class关键字引入了一种新的面向对象编程的语法,使得JavaScript更加接近传统的面向类的语言。这个特性让开发者能够更直观地定义和使用类,而不再需要依赖于构造函数和原型链。下面我们将深入探讨class...
04 ES6中对象的简写
gt8011的博客
410
在 ES6 中,对象字面量的书写方式进行了一些简化,使得对象的创建更加简洁。当对象的属性名和属性值的变量名相同时,可以省略属性值,只写属性名。这些简写特性使得在 ES6 中创建和操作对象更加方便和直观。可以合并多个对象,或将对象中的属性复制到新对象中。如果访问的对象属性名和变量名相同,可以省略属性名。直接作为属性名,它们的值由解构赋值提供。如果属性名是动态生成的,可以使用方括号。关键字,直接写方法名和函数体即可。对象中的方法定义不再需要使用。在上述 ES6 的例子中,如果对象的某个属性可能是。
01 ES6的箭头函数
gt8011的博客
297
箭头函数提供了一种更简洁、更易于理解的方式来编写函数,特别是在那些不需要完整函数体的简单场景中。然而,它们也有一些限制,需要根据具体的使用场景来选择是否使用箭头函数。箭头函数是 ECMAScript 6 (ES6) 引入的一种新的函数书写方式,它提供了更简洁的语法和一些独特的行为。对象,如果需要使用类似的功能,可以使用剩余参数(rest parameters)。箭头函数通常用于函数赋值,而不是函数声明。箭头函数的调用方式与传统函数相同,根据其赋值的变量名进行调用。的方法,如对象的方法或需要使用。
07 ES6的解构赋值
gt8011的博客
398
ES6(ECMAScript 2015)引入了解构赋值(Destructuring assignment)的概念,它允许我们以一种简洁的方式从数组或对象中提取值,并赋值给变量。
05 ES6中的Set类型
gt8011的博客
446
ES6 中引入的Set对象是一种集合数据结构,它存储不重复的值,类似于数组,但数组可以包含重复的元素,而Set不会。以下是Set。
02 ES6的函数参数默认值
gt8011的博客
423
函数参数的默认值是 ECMAScript 2015 (ES6) 引入的功能,它允许你在函数定义时为参数指定默认值。当函数被调用时,如果没有为某个参数提供值,或者提供了undefined,那么就会使用这个默认值。
10 ES6的模板字符串
最新发布
gt8011的博客
835
ES6模板字符串(Template Literals)是一种新的字符串表示方式,它提供了一种更为强大和灵活的方式来构建字符串。
03 ES6的扩展运算符
gt8011的博客
358
扩展运算符(Spread Operator)是 ECMAScript 2015 (ES6) 引入的一种语法,用三个点...表示。它提供了一种优雅的方式来扩展数组或对象中的元素或属性。
06 ES6中的Map类型
gt8011的博客
440
ES6 中的Map是一种集合数据结构,与Set类似,但它是用来存储键值对的。Map提供了更灵活的迭代和更广泛的键类型支持,与普通的对象相比,Map的键可以是任何值,包括对象和函数。以下是Map。
09 ES6的模块化语法
gt8011的博客
424
ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,其中引入了许多新特性,包括模块化语法。ES6的模块化语法允许开发者将代码分割成独立的模块,每个模块可以包含变量、函数和其他资源,并且可以在不同的文件中进行导入和导出。
ES6常用功能/新特性
闻人放歌的三寸青草园圃
736
es6模块化,在浏览器中需要通过webpack/rollup打包。这里我们也可以比较下两者打包结果的区别。查看打包后的代码,webpack有很多自己缝状的辅助函数,而rollup除了定义的amd/umd标准函数外,其他都是自己的逻辑代码。以下例子可以看出es6中class的本质就是js构造函数的语法糖。但是使用class写法,语意更加清晰、简洁。箭头函数可以改变js函数烦人的this指向window问题,将this指向最近一层。promise用来解决js中的callback hell。
es6 class类
09-20
ES6中的class(类)是一种对象的模板,通过class关键字可以定义类。它可以看作是一种语法糖,使对象原型的写法更加清晰、更像面向对象编程的语法。类的定义不可重复声明,必须在访问之前对类进行定义,否则会报错。 在继承方面,ES6要求子类必须在构造函数中调用super,因为子类的this是从父类继承而来的。super可以作为函数调用,也可以作为对象使用。当super作为函数时,只能在构造函数内部调用。当super作为对象时,可以在其他方法内部调用。在静态方法中调用super时,super指向父类;在原型方法中调用super时,super指向父类的原型。 有关ES6 Class类的实现原理,可以参考一些详细的示例代码,这些示例代码可以为学习和工作提供一定的参考价值。

相关文章
|
4月前
ES6中的class类 及 递归
ES6中的class类 及 递归
23 3
ES6学习(7)class
ES6学习(7)class
|
JavaScript
对TS里接口、extends和类的理解
对TS里接口、extends和类的理解
89 1
|
11月前
ES6中的class类
ES6中的class类
47 0
|
存储 JavaScript
【TS】class类和接口
【TS】class类和接口
108 0
ES6 class使用方法
ES6 class使用方法
64 0
|
JavaScript
【ES6】类
【ES6】类
53 0
|
JavaScript Java C++
ES6-Class如何优雅的进行“糖化”
这是一篇番外篇,其实他的主线是由一篇ES6-Class科普文章引发的“惨案”。虽然是番外篇,但是有些剧情还是不容错过的。 现在我们来进入番外篇的主线:ES6的Class是ES5构造函数的语法糖。
|
JavaScript 前端开发 Java
ES6_Extends如何对ES5的继承进行“糖化”
我用我拙劣的代码来将这层糖的成分细细分析一下。 下面一些方法,都是基于class被脱糖之后的分析。关于class是如何被脱糖的过程===>请先查看ES6-Class如何优雅的进行Prototype“糖化” 内容很精彩,但是不要忘记回来看这个。这个剧情也挺赤鸡的。