1.Reflect
Reflect 静态类(类似Math 不能被new实例化)Reflect的成员方法就是Proxy处理对象的默认实现;
Proxy在实例化时 如果没有添加处理方法 如get set等,实际上等同与使用Reflect去处理对象;
Reflect提供了一套用于操作对象的API 统一了对象的操作方式;
'name' in obj 判断对象中是否有这个属性
delete obj.name 删除对象某个属性,
Object.keys() 取到对象的所有可枚举属性,
// 在ES标准中 以后会废弃这些方法
obj = {name: 'zs', age:22};
console.log(Reflect.has(obj, 'name')); // true
console.log(Reflect.deleteProperty(obj, 'name')); // true
console.log(Reflect.ownKeys(obj)); // [ 'age' ]
2.class
ES5之前:使用函数模拟类 给函数原型添加成员变量 来模拟实现实例共享方法
function Person(name) {
this.name = name;
return this;
}
Person.prototype.say = function() {
console.log(`name: ${th