- Objective:
- Breadcrumb:
# 概念阐释
## 语义
`static`方法通常用于创建**实用函数程序**[^1],具有一定通用性的函数,以应对不同的场景。静态方法直接在**类**上进行,不能在类的**实例**中调用。(可以是父类,也可以是子类)
## 语法
```js
static methodName(parameters) { ... }
```
除了前面加了`static`,其他和方法写法一样
# 实例
```js
class Animal {
constructor(name) {
this._name = name;
this._behavior = 0;
}
// 创建一个可随机生成名字的静态方法函数
static generateName() {
const names = ['Angel', 'Spike', 'Buffy', 'Willow', 'Tara'];
const randomNumber = Math.floor(Math.random()*5);
return names[randomNumber];
}
}
```
```js
//调用类,返回一个随机姓名
console.log(Animal.generateName());
```
```js
//调用实例,返回错误❌
const tyson = new Animal('Tyson');
console.log(tyson.generateName());
```
# 相关内容
在调用对象或类中的属性和方法时,只有方法(函数)才需要写`()`或者`(参数)`, 如果是属性则不写,写了会报错“not a function”
# 问题
- [练习题1](https://www.codecademy.com/journeys/full-stack-engineer/paths/fscj-22-front-end-development/tracks/fscj-22-javascript-syntax-part-iii/modules/wdcp-22-learn-javascript-syntax-classes-8d95f6d1-ff64-43c3-8ff7-cdc933e16fde/lessons/classes/exercises/static-methods) 🌟🌟🌟
在你的HospitalEmployee类内部,创建一个名为generatePassword的静态方法。当调用该方法时,它应该返回一个介于零和10000之间的随机整数。
```js
class HospitalEmployee {
constructor(name) {
this._name = name;
this._remainingVacationDays = 20;
}
//写下静态方法
get name() {
return this._name;
}
get remainingVacationDays() {
return this._remainingVacationDays;
}
takeVacationDays(daysOff) {
this._remainingVacationDays -= daysOff;
}
}
```
- [练习题2](https://www.codecademy.com/journeys/full-stack-engineer/paths/fscj-22-front-end-development/tracks/fscj-22-javascript-syntax-part-iii/modules/wdcp-22-learn-javascript-syntax-classes-8d95f6d1-ff64-43c3-8ff7-cdc933e16fde/lessons/classes/exercises/review-classes)🌟🌟
添加一个Doctor子类,并print结果
# 问题答案
1. 名称要大写
2. 子类中不需要再写一遍父类的`get`
```js
class HospitalEmployee {
constructor(name) {
this._name = name;
this._remainingVacationDays = 20;
}
static generatePassword() {
const randomPassword = Math.floor(Math.random()*10001)
return randomPassword;
}
get name() {
return this._name;
}
get remainingVacationDays() {
return this._remainingVacationDays;
}
takeVacationDays(daysOff) {
this._remainingVacationDays -= daysOff;
}
}
```
# 参考资料
- [静态方法-MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes/static)
- [GPT](https://chat.openai.com/?model=gpt-4)
[^1]: 实用函数程序:
实用程序函数是指在编程中常用的一些函数或方法,它们可以用来完成一些常见的任务或处理一些常见的问题。这些函数通常具有一定的通用性,可以在不同的应用场景中使用。
实用程序函数可以包括各种各样的功能,例如字符串处理函数、日期时间处理函数、文件操作函数、数学计算函数等等。这些函数的目的是为了提高编程效率和代码的可维护性,同时也可以减少代码的重复编写。
使用实用程序函数可以简化编程过程,提高代码的可读性和可重用性。它们通常被封装成库或模块,供开发者直接调用使用。实用程序函数的设计要考虑到通用性、效率和易用性,以满足各种不同的需求。
总之,实用程序函数是编程中常用的一些函数或方法,用于完成一些常见的任务或解决一些常见的问题,以提高编程效率和代码的可维护性。