常用的小技巧网上很多了,只记些自己偶尔用到的。
1. 深度 copy 一个 string:
var string_copy = (' ' + original_string).slice(1);
refer stackoverflow
2. 获取一个数组对像的脚标
let a = [{1: 'x'}, {1: 'y'}, {1: 'z'}]
let b = Array.from(a.keys())
console.log(b)
refer stackeoverflow
3. copy 一个数组
// 方法一 ES6的Array.from()
var arr = [1,2,3];
var arr2 = Array.from(arr);
// 方法二 ES6的扩展运算符(...)
var arr = [1,2,3];
var arr2 = [...arr];
4. 判断对像是否为空
const obj = {}
let isObjEmpty= Object.keys(obj).length? true:false
console.log('isObjEmpty', isObjEmpty)
5. 判断变量是否是数组
var arr = [];
console.log(Array.isArray(arr));//true
refer: JS-判断变量是否为数组
6. 动态属性名称
const dynamic = 'flavour';
var item = {
name: 'Coke',
[dynamic]: 'Cherry'
}
console.log(item);
// { name: "Coke", flavour: "Cherry" }
refer: 9 个极其强大的 JavaScript 技巧
7. 创建模块或单例
image.png很多时候,你需要在加载时初始化某些内容,设置它需要的各种事物,然后就可以在应用程序中到处使用它,而无需再做什么补充工作。你可以使用 IIFE 函数来做到这一点,这个函数太好用了。这种模块模式用来隔离事物非常好用,它可以只暴露需要交互的内容。
refer: 你应该了解的25个JS技巧 & 原文
8. 创建模块或单例用函数扩展类
这是个类似组合生成类的方法,即将几组不同的属性,合并在一个类中。
image.png我经常对别人讲,JavaScript 类只是构造函数和底层的原型,不是像 Java 中那样的真实概念。一个证据是,你可以只使用一个构造函数来扩展一个类。在私有内容里这个很好用,在类里“#”这些看着很奇怪,并且用于 babel 或 WebPack 时,编译出来的代码更少。
refer: 你应该了解的25个JS技巧 & 原文
9. 轮询数据
可以结合这个流水帐客户端轮询后台接口
image.png如果你需要持续检查数据更新,但系统中没有 WebSocket,则可以使用这个工具来执行操作。它非常适合上传文件时,想要持续检查文件是否已完成处理的情况,或者使用第三方 API(例如 dropbox 或 uber)并且想要持续检查过程是否完成或骑手是否到达目的地的情况。
10.随机 ID 生成器
image.png有时你只是需要一些 ID?除非你要的是更复杂的 ID 生成器(例如 UUID),否则用不着为此安装什么新库,下面这个选项足够了。你可以从当前时间(以毫秒为单位)或特定的整数和增量开始生成,也可以从字母生成 ID。
11. 不同概率做不同操作
int foo = Math.random() * 100;
if (foo < 80) // 0-79
sendMessage("hi");
else if (foo < 85) // 80-84
sendMessage("bye");
else // 85-99
sendMessage("test");
refer: percentage-chance-of-saying-something
12. 生成指定范围内的随机数值
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
refer: # Generate random number between two numbers in JavaScript
and next one is on the road
网友评论