let numbers = [0, 1, 2];numbers = new Proxy(numbers, { get(target, prop) { return target[prop] ? target[prop] : 0; }, set(target, prop, value) { if (typeof value === 'number') { target[prop] = value; return true; } else { return false; } },});numbers[4] = 4;// numbers[9] = '9'; //Error: 'set' on proxy: trap returned falsish for property '9'console.log(numbers[1]);console.log(numbers[78]);
let numbers = [0, 1, 2];numbers = new Proxy(numbers, { get(target, prop) { return Reflect.get(target, prop); }, set(target, prop, value) { if (typeof value === 'number') { Reflect.set(target, prop, value); return true; } else { return false; } },});numbers[4] = 4;console.log(numbers[1]);console.log(numbers[4]);
// 一个属性不能同时数据属性和let _name = 'sfd';let A = { get name() { return _name; }, set name(name) { _name = name; this.getName(); }, getName: function () { console.log(this.name); },};A.name = 8080;const A = { getName: function () { console.log(this.name); },};Object.defineProperty(A, 'name', { set(value) { this._name = value; this.getName(); }, get() { return this._name; },});A.name = 'Joy';const _A = { name: 'sfd', getName: function () { console.log(this.name); },};const A = new Proxy(_A, { get(target, prop) { return Reflect.get(target, prop); }, set(target, prop, value) { Reflect.set(target, prop, value); target.getName(); return true; },});A.name = 'Joy';