Skip to content

Latest commit

 

History

History
36 lines (28 loc) · 987 Bytes

#61-监听数组变化.md

File metadata and controls

36 lines (28 loc) · 987 Bytes

在前端的 MVVM 框架当中,我们经常需要监听数据的变化,而数组是需要监听的重要对象。请你完成 ObserverableArray,它的实例和普通的数组实例功能相同,但是当调用:

  • push
  • pop
  • shift
  • unshift
  • splice
  • sort
  • reverse

这些方法的时候,除了执行相同的操作,还会把方法名打印出来。 例如:

const arr = new ObserverableArray()

arr.push('Good') // => 打印 'push',a 变成了 ['Good']

注意,你不能修改 Array 的 prototype。还有函数 return 的值和原生的操作保持一致。


参考答案:

function ObserverableArray() {
  return new Proxy([], {
    get(target, propKey) {
      const matArr = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];
      matArr.indexOf(propKey) > -1 && console.log(propKey);
      return target[propKey]
    }
  })
}