访问器只是对单个属性进行控制和校验

    1. let obj{
    2. name = 'haha'
    3. set name(value) {
    4. if (value !== '') return this.name = value
    5. }
    6. get ....
    7. }
    8. obj.name('value')//直接进入到访问器中

    proxy 是对整个对象进行控制

    1. let data = {name: 'haha'}
    2. let proxya = new proxy(data, {
    3. get(obj, propty) {
    4. return obj[propty] // 返回name
    5. }
    6. set(obj, propty, value) {
    7. obj[propty] = value // 赋值
    8. return true
    9. }
    10. })
    11. proxya.name = '111'
    12. console.log(proxya.name)
    13. // 111

    proxy还可以对函数进行控制;

    proxy对数组的控制(数组中title超过5个字符显示…)

    1. let data = [
    2. {name: '哈哈哈哈哈啊的哀伤的嗷嗷' age: 12},
    3. {name: 'if空间阿四大皆空收不到阿接受的'age: 90}
    4. ]
    5. let proxya = new Proxy(data, {
    6. get(array, key) {
    7. const name = array[key].name
    8. const len = 5
    9. array[key].name.length > len ? name.substr(0, len) + '.'.sepeat(3) : name
    10. return array[key]
    11. }
    12. })
    13. console.log(proxya[2])
    14. // 哈哈哈哈哈...