18) 面向对象
是ES5语法糖
1. 构造函数
function Animal(name,age){
this.name = name;
this.age = age;
}
let animal = new Animal('terry',12);
-------------------------------------
class Animal {
constructor(name,age){
this.name = name;
this.age = age;
}
}
let animal = new Animal('terry',12);
语法:
class 为关键字
Animal 为类名,类名首字母大写,采用驼峰命名
{} 为类体,其中可以包含:
构造函数、
成员属性、
成员方法、
静态方法、
静态属性、
静态代码块(node16才支持)
2. 实例对象
通过构造函数创建的对象
plain object 纯对象({},new Object())
3. 原型方法 - 成员方法/实例方法
class Animal {
name; // 成员自身中
sayName(){ // 原型
}
sayAge(){
}
}
4. 构造函数方法 - 静态方法
class Animal {
sayAge(){
}
static foo(){ // 类,通过类名直接调用
}
}
5. 继承
原型链继承:子构造函数的原型指向父构造函数的实例
借用构造函数:
function Dog (name,age,gender){
Animal.call(this,name,age)
this.gender = gender;
}
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;
Dog.prototype.xxx 实例方法
Dog.xxx 构造函数方法
---------------------------
class Dog extends Animal{
constructor(name,age,gender){
super(name,age)
this.gender = gender;
}
sayGender(){
}
}
19) 模块化
任何一个js文件或者是目录都可以认为是一个模块,如果目录作为一个模块,那么,目录中应该出现package.json
$ npm init -y
$ npm install qs --save
连接互联网,获取qs库?中央仓库 ,下载当前目录的node_modules
--save 本地安装并且将其安装信息写入到package.json中 dependencies
CommonJS 模块化
社区提供的
1. 模块的暴露
模块内部的变量其他模块是无法访问,如果想要其他模块进行访问,需要进行接口的暴露
module.exports
module是一个对象,每个模块都拥有这个对象,exports属性是用于将当前目录信息传递到其他模块,其默认值是一个空对象
module.exports.xxx
或者
module.exports = {}
2. 模块引用
require(模块)
1. 当模块为自定义模块的时候,参数为文件路径
require('./a.js')
2. 当模块为内置模块的时候,参数为模块名称
require('http')
3. 当模块为第三方模块的时候,参数为模块名称,但是需要先进行模块的安装
$ cnpm install axios --save
require('axios');
模块引入本质的就是获取被引入模块中的module.exports属性。
ES6 模块化
官方提供的
如果想要让nodejs支持es6模块化:node版本v14+ , package.json添加一个配置项 type:"module"
模块暴露:
export 声明
多次使用,使用哪个变量暴露,就要使用哪个变量获取
export default
尽可使用一次,可以使用任意变量名来获取
一个模块中可以既使用export又使用export default
模块导入
import aa from './a.js'
2021-09-23
最新推荐文章于 2024-09-03 17:02:58 发布