函数与对象的语法糖 笔记
2018-12-12 本文已影响2人
xingkong_s
函数的默认参数
function foo(p1:0,p2=1){
console.log(p1,p2)
}
foo(2) //2,1
剩余参数
伪数组变为数组
function foo(){
let args = Array.prototype.slice.call(arguments)
let args = Array.from(arguments)
let args = [...arguments]
}
foo(1,2,3,4,5,6,7,8,9,10)
array2 是array1 的第三项后的几项
let array1 = [1,2,3,4,5,6,7,8,9]
var v[a,b,c,...array2] = array1
console.log(array2)
//那我不用abc怎么写
var [,,,...array2] =array1
展开操作
[...array] = [1,23,5,7,9]
解构赋值
var [a,b] = [b,a];
[a,b,...array ] = [10,20,30,40,50];
let array3 = [1,2,...array,50]
let frank = {name:1,age:2}
let [name,age] = frank;
[a=1,b=7] = [2] //a = 2 b = 7
function foo(){ return {name:1,age:2,grand:1}}
[a,b] = foo();
[a,,b] = foo();
let {name:hi,age:bye} = frank;
{a = 5,b = 4} = {a:3}
//对象浅拷贝
let obj2 = {...frank}
//对象的合并
let obj3 = {...frank,...foo()}
属性的解构和合构
等号左边是内容解构
等号右边是合起来的内容
对象的属性加强
var obj1 = {
"x":x,
"y":y
}
-----
var obj2 = {x,y}
对象动态的key值(将动态的值用[]括起来)
let key = "x"
let value = "y"
let obj = {}
obj[key] = value //{x:y}
-----
//简化为
let obj1 = {
[key] = value
} //{x:y}
函数的简化:
let obj1 = {name:1,age:2}
let obj = {
z:1,
x,
y,
...obj1, //复制obj1的值
sayHi(name='jack'){},
sayBye(){},
sayGoodBye(){
console.log('good Bye')
}
}
简易深拷贝
Json.parse(Json.stringify(data))
这个方法不适用与复杂对象
如果这个对象满足以下条件
- 这个对象没有复杂对象
没有日期对象 正则对象 函数 循环引用 所有普通对象之外的对象 - 这个对象没有undefined
复杂对象怎么深拷贝 用递归