一、对象的使用
1、如果属性值是变量,当对象的属性和属性值一致时,可以省略掉属性值;
2、对象中的方法可以省略掉: function;
3、对象的属性可以是表达式;
var name = '小明';
var a = 'first'
var b = 'name'
var c = 'last'
var obj = {
name,
age: 18,
sex: '男',
eat: function() {
console.log('chi');
},
play() {
console.log('wan');
},
[a + b]: '小红',
[c + b]: '李',
[a + c]() {
console.log(123);
}
}
// 1、
console.log(obj);
console.log(obj.name);
// 2、
obj.play()
// 3、
console.log(obj[a + b]);
console.log(obj.firstname);
obj[a + c]()
4、Object.is() 比较两个值是否严格相等,或者说全等 ===(类似但不完全是);
console.log(Object.is('32','32')); //T
console.log(Object.is(32,32)); //T
console.log(Object.is('32',32)); //F
console.log(Object.is(NaN,NaN)); //T
5、Object.assign() 将源对象的属性赋值到目标对象上;
var target = {
a: 1
}
var origin = {
b: 2,
c: 3
}
console.log(Object.assign(target,origin));
// console.log(target);
target.b = 10
console.log(target);
console.log(origin);
6、Object.getPrototypeOf函数 获取一个对象的prototype属性;
7、Object.setPrototypeOf函数 设置一个对象的prototype属性;
function Person() {}
var obj = new Person()
Object.setPrototypeOf(obj,{name:1})
console.log(Object.getPrototypeOf(obj));
8、Object.keys() 会返回一个由一个给定对象的自身可枚举属性组成的数组;
9、Object.values() 会返回一个由一个给定对象的自身可枚举属性值组成的数组。
var obj3 = {a: 1,b: 2,c: 3}
console.log(Object.keys(obj3)); //['a', 'b', 'c']
console.log(Object.values(obj3)); // [1, 2, 3]
二、函数的使用
1、参数的默认值 解决了不传实参,形参为undefined的问题;
function fn(a,b = 10) {
// var b = b || 10
console.log(a,b);
}
fn(5)
2、rest参数;
function fn1(a,...rest) {
console.log(a,rest); //1 [2, 3, 4]
}
fn1(1,2,3,4)
3、扩展运算符;
(1)遍历数组(2)当作数组的元素(3)数组的深拷贝(4)作为函数的参数(5)与解构赋值结合(6)转换成真正的数组(7)遍历数组(8)合并对象
// 数组的深拷贝
var arr2 = [...arr]
console.log(arr2);