加号运算符
// 可以做到转换格式
let a = '12'
let b = + a + 12;
let c = a - 0 + 12
let d = a + 12;
console.log(b); // 24
console.log(c); // 24
console.log(d); // 1212
动态绑定属性
// 在with中可以操作对象的每一项
let tom = {
name: "tom",
height: 170,
sex: "男"
}
with(tom){
height++
console.log(height); // 171
console.log(name); // tom
}
函数的调用堆栈
// 查看函数是被谁调用的
function fn1(){
console.log(arguments.callee.caller);
}
function fn2(){
fn1()
}
fn2() // [Function: fn2]
void无效操作符
console.log(void(1));
console.log(void('1'));
console.log(void(true));
console.log(void(false));
console.log(void([]));
console.log(void({}));
console.log(void(undefined));
console.log(void(null));
全部返回 undefined
Reflect
反射极致。
目前只用过ownKeys,获取对象的key,尤其是Symbol类型的key。
Reflect.ownKeys(obj) // Array
判断类型
number、string、object、Boolean、null、undefined
使用typeof 只会返回五大常用类型。
1、使用instanceof方法
let arr = [];
console.log(arr instanceof Array); // true
2、使用constructor方法
let obj = {}
console.log(obj.constructor == Object) // true