- 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]: 实用函数程序: 实用程序函数是指在编程中常用的一些函数或方法,它们可以用来完成一些常见的任务或处理一些常见的问题。这些函数通常具有一定的通用性,可以在不同的应用场景中使用。 实用程序函数可以包括各种各样的功能,例如字符串处理函数、日期时间处理函数、文件操作函数、数学计算函数等等。这些函数的目的是为了提高编程效率和代码的可维护性,同时也可以减少代码的重复编写。 使用实用程序函数可以简化编程过程,提高代码的可读性和可重用性。它们通常被封装成库或模块,供开发者直接调用使用。实用程序函数的设计要考虑到通用性、效率和易用性,以满足各种不同的需求。 总之,实用程序函数是编程中常用的一些函数或方法,用于完成一些常见的任务或解决一些常见的问题,以提高编程效率和代码的可维护性。