跳至主要內容

编程基础知识

...大约 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编写代码的时候,有一种函数式编程的思想,而提到函数式编程,一定绕不开一个概念,那就是柯里化。open in new window 柯里化是编程语言中的一个通用的概念(不只是Js,其他很多语言也有柯里化),是指把接收多个参数的函数变换成接收单一参数的函数,嵌套返回直到所有参数都被使用并返回最终结果。)

使用 javascript 判断值为空, 但可以为 0

if (value != null && value !== "") {
	console.log('2333')    
}

代码的核心

不管是哪种带逻辑的代码的核心,不管什么语言都是三种执行顺序

  • 判断
  • 循环
  • 顺序执行

一些插件使用的注意事项

mock.js 只能劫持 XMLHttpRequest,不能劫持 fetch

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5