编程基础知识
...大约 3 分钟
编程基础知识
什么是面向对象 (OOP)
特点:将功能模块用类封装对象,每个模块相对独立,之间的数据不会互相影响
- 抽象现实生活的事物特征,对于理解友好
- 封装性 (高内聚低耦合)、继承性、多态性
- Java、C# 典型的面向对象的编程语言
1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里
2、去饭店,张开嘴:老板!来一份鱼香肉丝!
看出来区别了吗?1是面向过程,2是面向对象
函数式编程(FP)
特点:将多次使用的功能抽离出来成为一个函数,便于复用
- 确定的数据输入、输出;没有 “副” 作用,相对独立
- 引入透明,对 IDE 友好,易于理解
- 如今主流的 vue/react 中的书写方式
面向切面编程 (AOP)
场景:添加一个全局日志功能,获取全局路由等等功能
特点:在不破坏原有封装功能的情况下,额外增加功能
- 扩展功能方便,不影响业务之间的逻辑
- 逻辑集中管理
- 更利于代码复用
console.timeEnd()
这个 API 能够给出, 程序执行到当前位置所需时间
重置默认样式的方法
安装 清除默认样式 css
pnpm i -S reset.css
直接在入口文件引入即可
// mian.ts
import reset.css
日期工具
先直接按照 dayjs 日期工具
pnpm i -S dayjs
CommonJS 规范 与 ES模块规范
CommonJS 规范
// 导入
const alias = require("./number.js")
// 导出 number.js
module.exports = alias;
ES模块 规范
// 导入
import alias from "./alias.js";
// 导出
export default function alias() {
console.log('alias');
}
语法差异
- CommonJS 模块是 Node.js 专用,与 ES6 模块不兼容。而 ES6 模块化在浏览器和 node.js 中都可以用
- 语法上面,两者最明显的差异是,CommonJS 模块使用 require() 和 module.exports,ES6 模块使用 import 和 export
- 在 node.js 使用模块化,需要将 CommonJS 脚本的后缀名都改成 .cjs,ES6 模块采用 .mjs 后缀文件名。或者修改 package.json 里面的文件,type 字段为 module 或 commonjs。
组件化优点
- 便于 维护、复用
柯里化
柯里化的目的在于, 将重复参数进行复用
普通函数转为柯里化函数
const curry = function (fn: Function) {
return function nest(...args: any) {
// fn.length表示函数的形参个数
if (args.length === fn.length) {
// 当参数接收的数量达到了函数fn的形参个数,即所有参数已经都接收完毕则进行最终的调用
return fn(...args);
} else {
// 参数还未完全接收完毕,递归返回judge,将新的参数传入
return function (arg: any) {
return nest(...args, arg);
// 下面的写法, 结果就相反
// return nest(arg, ...args);
};
}
};
};
function addNum(a: any, b: any, c: any) {
return a + b + c;
}
const addCurry = curry(addNum);
console.log(addCurry("1")("2")("3")); // 123
[Javascript中的函数柯里化使用)](https://zhuanlan.zhihu.com/p/120735088#:~:text=什么是柯里化,在使用JavaScript编写代码的时候,有一种函数式编程的思想,而提到函数式编程,一定绕不开一个概念,那就是柯里化。 柯里化是编程语言中的一个通用的概念(不只是Js,其他很多语言也有柯里化),是指把接收多个参数的函数变换成接收单一参数的函数,嵌套返回直到所有参数都被使用并返回最终结果。)
使用 javascript 判断值为空, 但可以为 0
if (value != null && value !== "") {
console.log('2333')
}
代码的核心
不管是哪种带逻辑的代码的核心,不管什么语言都是三种执行顺序
- 判断
- 循环
- 顺序执行
一些插件使用的注意事项
mock.js 只能劫持 XMLHttpRequest,不能劫持 fetch
Powered by Waline v2.15.5