首页 > 编程语言 >javascript class

javascript class

时间:2022-10-15 23:06:28浏览次数:34  
标签:JavaScript name Runoob javascript constructor super class


javascript class

javascript class_前端

文章目录

1. 简介

类是用于创建对象的模板。

我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。

每个类中包含了一个特殊的方法 ​​constructor()​​,它是类的构造函数,这种方法用于创建和初始化一个由 class 创建的对象。

创建一个类的语法格式如下:

class ClassName {
constructor() { ... }
}

实例

class User {

constructor(name) {
this.name = name;
}

sayHi() {
alert(this.name);
}

}

// Usage:
let user = new User("John");
user.sayHi();

2. 浏览器支持

javascript class_javascript_02

3. 使用类

定义好类后,我们就可以使用 ​​new​​ 关键字来创建对象:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h2>JavaScript 类</h2>

<p>如何使用 JavaScript 类</p>

<p id="demo"></p>

<script>
class Runoob {
constructor(name, url) {
this.name = name;
this.url = url;
}
}

let site = new Runoob("菜鸟教程", "http://www.runoob.com");
document.getElementById("demo").innerHTML =
site.name + ":" + site.url;
</script>

</body>
</html>

输出:

JavaScript 类
如何使用 JavaScript 类

菜鸟教程:http://www.runoob.com

创建对象时会自动调用构造函数方法 ​​constructor()​​。

4. 类表达式

类表达式是定义类的另一种方法。类表达式可以命名或不命名。命名类表达式的名称是该类体的局部名称。

// 未命名/匿名类
let Runoob = class {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// output: "Runoob"

// 命名类
let Runoob = class Runoob2 {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// 输出: "Runoob2"

构造方法

构造方法是一种特殊的方法:

  • 构造方法名为 constructor()。
  • 构造方法在创建新对象时会自动执行。
  • 构造方法用于初始化对象属性。
  • 如果不定义构造方法,JavaScript 会自动添加一个空的构造方法。

5. 类的方法

我们使用关键字 ​​class​​​ 创建一个类,可以添加一个 ​​constructor()​​ 方法,然后添加任意数量的方法。

class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}

以下实例我们创建一个 “age” 方法,用于返回网站年龄:

class Runoob {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
let date = new Date();
return date.getFullYear() - this.year;
}
}

let runoob = new Runoob("菜鸟教程", 2018);
document.getElementById("demo").innerHTML =
"菜鸟教程 " + runoob.age() + " 岁了。";

6. 严格模式 “use strict”

类声明和类表达式的主体都执行在严格模式下。比如,构造函数,静态方法,原型方法,​​getter​​​ 和 ​​setter​​ 都在严格模式下执行。

如果你没有遵循严格模式,则会出现错误:

class Runoob {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
// date = new Date(); // 错误
let date = new Date(); // 正确
return date.getFullYear() - this.year;
}
}

7. 类关键字

7.1 extends

extends 关键字用于创建一个类,该类是另一个类的子类。

子类继承了另一个类的所有方法。

继承对于代码可重用性很有用:在创建新类时重用现有类的属性和方法。

​super()​​ 方法引用父类的构造方法。

通过在构造方法中调用 super() 方法,我们调用了父类的构造方法,这样就可以访问父类的属性和方法。

语法

class childClass extends parentClass

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h2>JavaScript 类继承</h2>

<p>JavaScript 类继承使用 extends 关键字。</p>
<p>"super" 方法用于调用父类的构造函数。</p>

<p id="demo"></p>

<script>
class Site {
constructor(name) {
this.sitename = name;
}
present() {
return '我喜欢' + this.sitename;
}
}

class Runoob extends Site {
constructor(name, age) {
super(name);
this.age = age;
}
show() {
return this.present() + ', 它创建了 ' + this.age + ' 年。';
}
}

let noob = new Runoob("菜鸟教程", 5);
document.getElementById("demo").innerHTML = noob.show();
</script>

</body>
</html>

输出:

JavaScript 类继承
JavaScript 类继承使用 extends 关键字。

"super" 方法用于调用父类的构造函数。

我喜欢菜鸟教程, 它创建了 5

7.2 static

类(class)通过 static 关键字定义静态方法。

静态方法调用直接在类上进行,不能在类的实例上调用。

静态方法通常用于创建实用程序函数。

语法

static methodName()
class Runoob {
constructor(name) {
this.name = name;
}
static hello() {
return "Hello!!";
}
}

let noob = new Runoob("菜鸟教程");

// 可以在类中调用 'hello()' 方法
document.getElementById("demo").innerHTML = Runoob.hello();

// 不能通过实例化后的对象调用静态方法
// document.getElementById("demo").innerHTML = noob.hello();

7.3 super

super 关键字用于访问和调用一个对象的父对象上的函数。。

在构造函数中使用时,super关键字将单独出现,并且必须在使用 this 关键字之前使用。super 关键字也可以用来调用父对象上的函数。

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h2>JavaScript 类继承</h2>

<p>JavaScript 类继承使用 extends 关键字。</p>
<p>"super" 方法用于调用父类的构造函数。</p>

<p id="demo"></p>
<p id="demo2"></p>
<script>
class Polygon {
constructor(height, width) {
this.name = 'Rectangle';
this.height = height;
this.width = width;
}
sayName() {
return 'Hi, I am a ', this.name + '.';
}
get area() {
return this.height * this.width;
}
set area(value) {
this._area = value;
}
}

class Square extends Polygon {
constructor(length) {
// 这里,它调用父类的构造函数的,
// 作为 Polygon 的 height, width
super(length, length);

this.height; // 需要放在 super 后面,不然引发 ReferenceErro

// 注意:在派生的类中,在你可以使用'this'之前,必须先调用 super()。
// 忽略这,这将导致引用错误。
this.name = 'Square';
}
}

let s = new Square( 5 );
document.getElementById("demo").innerHTML = s.sayName();
document.getElementById("demo2").innerHTML = s.area;
</script>

</body>
</html>

输出:

JavaScript 类继承
JavaScript 类继承使用 extends 关键字。

"super" 方法用于调用父类的构造函数。

Square.

25

用 ​​super​​ 调用父类的静态方法:

!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h2>JavaScript 类继承</h2>

<p>JavaScript 类继承使用 extends 关键字。</p>
<p>"super" 方法用于调用父类的静态方法。</p>

<p id="demo"></p>
<p id="demo2"></p>
<script>
class Rectangle {
constructor() {}
static logNbSides() {
return 'I have 4 sides';
}
}

class Square extends Rectangle {
constructor() {}
static logDescription() {
return super.logNbSides() + ' which are all equal';
}
}

document.getElementById("demo").innerHTML = Square.logDescription(); // 'I have 4 sides which are all equal'
</script>

</body>
</html>

输出:

JavaScript 类继承
JavaScript 类继承使用 extends 关键字。

"super" 方法用于调用父类的静态方法。

I have 4 sides which


标签:JavaScript,name,Runoob,javascript,constructor,super,class
From: https://blog.51cto.com/ghostwritten/5759360

相关文章

  • JavaScript --- 随机点名抽奖系统
    1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">7<metan......
  • golang_class
    func(thisPerson)和func(this*Person)的区别func(thisPerson)packagemainimport( "fmt")typePersonstruct{ namestring ageint}func(thisP......
  • 如何使用 JavaScript 代码连接部署在 SAP ABAP 服务器上的 OData 服务
    本教程有一位读者通过《一套适合SAPUI5开发人员循序渐进的学习教程》读者意见反馈和下一步写作计划表给我反馈:本教程目前的步骤,都是消费本地MockServer提供的假的......
  • 如何在 JavaScript中将axios与async/await一起使用?
    Axios是一个基于promise的处理异步HTTP请求的客户端。本指南将演示如何通过async/await处理这些请求。安装和使用要使用Axios,您需要使用npmnpminstallaxios......
  • javascript获取当前是http还是https
    我们经常需要获取网页的url,此时就会用到如下:document.location.protocol//判断是https:还是http:document.location.hostname//获取是localhost还是192.168.100.......
  • JavaScript的八种数据类型
    一、JavaScript的数据类型分为两大类:1.1基本数据类型:string、number、boolean、undefined、null、symbol、bigint1.1.1Symbolsymbol类型是ES6新增......
  • JavaScript 值类型与引用类型
    JS数据类型JS有两种数据类型分别为值类型,引用类型值类型:Number、String、Boolean、Null、Undefined、Symbol(ES6);引用类型:Object;值类型值类型存放在栈中,可以直接按值......
  • JavaScript
    1、什么是JavaScript1.1、概述JavaScript是一门世界上最流行的脚本语言Java、JavaScript(10天开发出来)一个合格的后端人员,必须要精通JavaScript1.2、历史ECMAScript它......
  • JavaScript中的 || 与 &&的使用
    一、使用描述1、||和&&  以前在js逻辑代码中,常常会用到类似于三元运算的||逻辑运算符。//如果this.redirect为真,就使用它,不然就使用"/"this.$router.replace(thi......
  • jmeter执行报错:java.lang.UnsupportedClassVersionError解决办法
    做个记录。问题记录:jmeter版本:5.4.1本地Java版本:1.8.0_151执行jmeter,报错:  2022-10-1412:06:27,372ERRORo.a.j.JMeter:Uncaughtexceptionint......