vue 怎样写一个用于copy的通用通用工具类

如题,有个例子

export function deepCopy (obj, cache = []) {
  if (obj === null || typeof obj !== 'object') {
    return obj
  }
  const hit = cache.filter(c => c.original === obj)[0]
  if (hit) {
    return hit.copy
  }

  const copy = Array.isArray(obj) ? [] : {}
  cache.push({
    original: obj,
    copy
  })
  Object.keys(obj).forEach(key => {
    copy[key] = this.deepCopy(obj[key], cache)
  })

  return copy
}

但是我用这个就一直报错这个方法不存在

阅读 2.4k
4 个回答

找不到模块,可能是路径不对。
但是deepCopy 函数里面 copy[key] = this.deepCopy(obj[key], cache)
为什么用this.deepCopy递归?

export 导出是有了,问题是你 import 导入了吗?

import导入的时候,你是直接 import deepCopy from 'xxx'
还是import { deepCopy } from 'xxx'

因为你是export 而不是 export default;通过export方式导出,在导入时要加{ }export default则不需要。使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。

上面有人提到了,this.deepCopy这里用法不对。this很大概率指向window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题