请忽略这6个没用的冷门知识点

170 阅读2分钟

声明

😂下面6个稍微冷门点的JS知识点,居然才知道两个;平时自认为还算挺认真的,居然只是个白银段位!!来看看你的JS基础处在什么段位?

青铜到王者.jpeg

  • 竟然一个没听过 ———— 倔强青铜;
  • 知道并理解一个 ———— 秩序白银;
  • 知道并理解二个 ———— 荣耀黄金;
  • 知道并理解三个 ———— 尊贵铂金;
  • 知道并理解四个 ———— 永恒钻石;
  • 知道并理解五个 ———— 至尊星耀;
  • 全都知道并理解 ———— 最强王者;

非科学标准选题,纯属参考娱乐

1. URLSearchParams

从地址栏中获取参数

// 地址栏:https://www.baidu.com?browser=chrome&action=redirect
const queryStrings = new URLSearchParams(window.location.search);
queryStrings.get('browser');// 'chrome'
queryStrings.has('action'); // true

2. new Set 在数组中去重,创建唯一列表

数组用===去重

const list = [1, 2, 3, 5, 2, 5, 7];
const uniqueList=[...new Set(list)]; // 1, 2, 3, 5, 7

3. 数组map(Number) —— 将原始值数组转换为其他类型

对数组所有值进行类型转换

const naiveList = ['1','2','3'];
const castedList = naiveList.map(Number);
console.log(castedList);// 1, 2, 3

通过map(Number),字符串数组就变成Number数组了。

4. 数组flat方法 —— ES6数组层级扁平化

去层级嵌套

const nestedList = [1, [2,[3,[4,[5]]]]];
// 展开二维数组
console.log(nestedList.flat());//[1, 2, [3,[4,[5]]]];
// 传入参数2,展开第三层
console.log(nestedList.flat(2));//[1, 2, 3,[4,[5]]];
// 传入参数Infinity,展开全部层级
console.log(nestedList.flat(Infinity));//[1, 2, 3, 4, 5];

5. Object.freeze —— 使用防止对象被更改,常用在单例模式之中

不能新增属性,不能修改属性

const immutableObject = {
  name: '格心派',
  url: 'https://gexinpai.github.io/'
};
Object.freeze(immutableObject);
immutableObject.name = 'xxx';
// immutableObject is still { name: '格心派', url: 'https://gexinpai.github.io/' }

6、Object.seal —— 创建受控对象

禁止新增属性,对现有属性不能删除,可以修改

const controlledObject = {
  name: '格心派'
};
Object.seal(controlledObject);
controlledObject.name='JACK';
controlledObject.url='https://www.bing.com';
console.log(controlledObject.url); //undefined

面对吃饭的技术,自己是什么段位,心里有数了吗?(😁仅供参考)欢迎在评论区留言吧~

image.png

你还知道哪些实用但冷门的js小知识呢?在评论区和大家分享一下吧....