可以被代理的14种行为
var handler =
{
// target.prop
get: '...',
// target.prop = value
set: '...',
// 'prop' in target
has: '...',
// delete target.prop
deleteProperty: '...',
// target(...args)
apply: '...',
// new target(...args)
construct: '...',
// Object.getOwnPropertyDescriptor(target, 'prop')
getOwnPropertyDescriptor: '...',
// Object.defineProperty(target, 'prop', descriptor)
defineProperty: '...',
// Object.getPrototypeOf(target), Reflect.getPrototypeOf(target),
// target.__proto__, object.isPrototypeOf(target), object instanceof target
getPrototypeOf: '...',
// Object.setPrototypeOf(target), Reflect.setPrototypeOf(target)
setPrototypeOf: '...',
// for (let i in target) {}
enumerate: '...',
// Object.keys(target)
ownKeys: '...',
// Object.preventExtensions(target)
preventExtensions: '...',
// Object.isExtensible(target)
isExtensible: '...',
}