获得徽章 7
- Day12来做分享了
对象深拷贝
json转化
| var obj = {name:'123'}
| var obj2 = JSON.parse(JSON.stringify(obj
|
es6解构赋值
| var obj = {name:'123',age:13};
| var obj2 = {...obj}
|
for in 遍历
| var obj = {
| name: "小明",
| age: 20
| }
| var obj1 = {}
| for (var key in obj) {
| //遍历属性值,深拷贝
| obj1[key] = obj[key]
| }
| console.log(obj1);
|
assign方法合并
| var obj = {name:'123',age:13};
| var obj2 = Object.assign({},obj1);
|
利用循环和递归实现
| function deepClone(obj, newObj) {
| var newObj = newObj || {};
| for (let key in obj) {
| if (typeof obj[key] == 'object') {
| newObj[key] = (obj[key].constructor === Array) ? [] : {}
| deepClone(obj[key], newObj[key]);
| } else {
| newObj[key] = obj[key]
| }
| }
| return newObj;
| }
|展开评论点赞 - Day11来做分享了
JS数组深拷贝
利用for循环实现
| var arr = [1,2,3,4,5]
| var arr2 = copyArr(arr)
| function copyArr(arr) {
| let res = []
| for (let i = 0; i < arr.length; i++) {
| res.push(arr[i])
| }
| return res
| }
|
利用slice方法实现
| var arr = [1,2,3,4,5]
| var arr2 = arr.slice(0)
| arr[2] = 5
| console.log(arr)
| console.log(arr2)
|
concat方法实现
| var arr = [1,2,3,4,5]
| var arr2 = arr.concat()
| arr[2] = 5
| console.log(arr)
| console.log(arr2)
|
ES6扩展符实现
| var arr = [1,2,3,4,5]
| var [ ...arr2 ] = arr
| arr[2] = 5
| console.log(arr)
| console.log(arr2)
|展开赞过21 - Day8来做分享了// 函数柯里化,利用递归和闭包实现
const curry = function (fn) {
const len = fn.length;
return function t() {
console.log(...arguments);
const innerLength = arguments.length;
const args = Array.prototype.slice.call(arguments);
if (innerLength >= len) {
return fn.apply(undefined, args) // 执行改造后的函数
} else {
return function () {
const innerArgs = Array.prototype.slice.call(arguments);
const allArgs = args.concat(innerArgs);
return t.apply(undefined, allArgs)
}
}
}
}
// 测试
function add(num1, num2, num3, num4, num5) {
return num1 + num2 + num3 + num4 + num5;
}
const finalFun = curry(add);
const result1 = finalFun(1)(2)(3)(4)(5);
const result2 = finalFun(1, 2)(3)(4)(5);
const result3 = finalFun(1, 2, 3)(4)(5);
const result4 = finalFun(1, 2, 3)(4, 5);
console.log(result1, result2, result3, result4); // 15 15 15 15展开评论点赞 - Day7来做分享了
子网掩码
子网掩码又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在广域网上。
计算方式:
IP地址为202.117.131.12/20
则20表示前20位是网络号,后12位是主机号
则子网掩码是11111111.11111111.11110000.00000000(32位)
二进制转换为255.255.240.0展开评论点赞 - Day6来做分享了
/** 缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 */
scaleToFill
/** 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 */
aspectFit
/** 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。 */
aspectFill
/** 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变 */
widthFix
/** 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变 */
heightFix
/** 裁剪模式,不缩放图片,只显示图片的顶部区域 */
top
/** 裁剪模式,不缩放图片,只显示图片的底部区域 */
bottom
/** 裁剪模式,不缩放图片,只显示图片的中间区域 */
center
/** 裁剪模式,不缩放图片,只显示图片的左边区域 */
left
/** 裁剪模式,不缩放图片,只显示图片的右边区域 */
right
/** 裁剪模式,不缩放图片,只显示图片的左上边区域 */
'top left'
/** 裁剪模式,不缩放图片,只显示图片的右上边区域 */
'top right'
/** 裁剪模式,不缩放图片,只显示图片的左下边区域 */
'bottom left'
/** 裁剪模式,不缩放图片,只显示图片的右下边区域 */
'bottom right'展开评论点赞
![[呲牙]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_2.cd1e2bd.png)