克隆 TypeScript 对象

2024-01-17

我有一个打字稿课程

export class Restaurant {

  constructor ( private id: string, private name: string ) {

  }

  public getId() : string {
    return this.id;
  }

  public setId(_id : string) {
    this.id = _id;
  }

  public getName () {
    return this.name;
  }

  public setName ( _name:string ) {
    this.name = _name;
  }

}

然后我有一个此类的实例(这是一个示例):

restaurant:Restaurant = new Restaurant(1,"TestRest");

然后我将这个餐厅对象存储在某种缓存中

cache.store( restaurant );

然后后来在我的申请中我拿回了餐厅

var restToEdit = cache.get( "1" );
restToEdit.setName( "NewName" );

但由于 javascript 通过对象的引用传递,我对restToEdit 所做的更改也会保存在缓存中的餐厅中。

我基本上希望缓存中的餐厅是与restToEdit 完全不同的实例。

我尝试过使用 jQuery.clone 和扩展,但它似乎不起作用,我认为这是因为它是一个打字稿对象。或者这并不重要?

任何有关如何克隆该对象的答案将不胜感激

Thanks


  • 使用标准ES6 特性 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

    const clone = Object.assign({}, myObject)
    

    警告:这将执行浅克隆。

    This 来自 MDN 的优秀页面 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign包含大量有关克隆的详细信息,包括 ES5 的 polyfill

  • 深度克隆的一种“快速”方法是使用JSON公用事业

    const clone = JSON.parse(JSON.stringify(myObject))
    
  • 克隆的“正确”方法是实现克隆方法或复制构造函数......

我知道我知道,没有足够的 JQuery https://meta.stackexchange.com/a/19492/353280

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

克隆 TypeScript 对象 的相关文章

随机推荐

  • C++ Map 使用非默认构造函数初始化对象

    在 C 中 假设我有一个无序映射定义如下 unordered map
  • Process.Start() 明显慢于在控制台中执行

    我使用以下命令执行 exe 时遇到性能问题Process Start NET 的执行时间大约是控制台的 5 倍 什么会导致这种情况 这是一个测试程序 public static void Main string argv for int i
  • 如何将事件对象传递给命名函数

    我有一个用于单击事件的事件处理程序 事件处理程序是一个命名函数而不是匿名函数 如何将事件对象传递给这个命名函数 usual example sel click function ev do stuff which involves the
  • notifyDataSetChanged 不会刷新 RecyclerView

    我有一个奇怪的问题 我切换到RecyclerView from ListView我无法刷新或通知我的更改ListView 我尝试打电话Item this notifyDataSetChanged 以及其他刷新方法View但它不起作用 反而R
  • setImeOptions:为什么软键盘上不显示“完成”按钮?

    我尝试使用以下命令在软键盘上设置 完成 按钮input setImeOptions EditorInfo IME ACTION DONE 但 完成 按钮根本不显示在软键盘上 请问有什么建议吗 public void modif int po
  • 切换弹出窗口并在外部单击时切换它

    我有一个问题 我正在尝试制作一个弹出窗口切换toggleClass 不过 我还制定了一条从 StackOverflow 获得的规则 当在外部单击时 弹出窗口会消失 但是 当我单击登录按钮时 它会出现 但我无法再使用登录按钮使其消失 但我已经
  • 2D OpenGL 场景因大量重叠形状而变慢

    我正在使用 OpenGL 绘制 2D 形状 他们没有使用那么多多边形 我注意到我可以有很多很多的形状 只要它们不重叠 如果我在一个形状后面得到一个形状 等等 它真的开始滞后 我觉得我可能做错了什么 这是正常的吗 有没有办法解决这个问题 我不
  • 猫效应和异步 IO 细节

    这几天我一直在思考猫效应和 IO 我觉得我对这种效果有一些误解 或者只是我错过了它的要点 首先 如果IO可以取代Scala的Future 我们如何创建异步IO任务 使用IO shift Using IO async Is IO delay同
  • 将 pandas 中的多列除以另一列

    我需要将 DataFrame 中除第一列以外的所有列除以第一列 这就是我正在做的事情 但我想知道这是否不是 正确的 熊猫方式 df pd DataFrame np random rand 10 3 columns list ABC df B
  • ActiveRecord has_many 其中表 A 中的两列是表 B 中的主键

    我有一个模型 Couple 有两列 first person id and second person id和另一个模型 Person 其主键是person id并有专栏name 这是我想要的用法 including Person mode
  • 有开源的 WPF 仪表控件吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用数组设置 Excel 范围格式

    我过去曾使用变体数组来填充一系列 Excel 单元格 我想知道 有没有办法对单元格格式做同样的事情 我不想逐个单元格地进行操作 最好尽量减少获取 Excel 范围的调用次数 我主要按照兰斯的建议去做 但是 在某些情况下 我会使用我想要设置的
  • PHP Session 变量未保存

    我已经查看了有关会话变量未保存的所有问题 但没有看到我的问题 所以我要问它 我有一个表单 一旦提交 它就会在我的数据库中搜索该名称 初始表格位于第 1 页 在第 2 页上 我从第 1 页获取变量并像这样保存 searchTerm POST
  • EditText 多重编辑填充检查

    我正在创建一个项目 其中填充了 3 个编辑文本我想检查 3 个编辑文本中的任何一个是否应该填充 3 个编辑文本中的任何一个我知道如何检查所有 edittext 值中是否都有数据 private boolean validate edit1
  • MySQL 中的时间戳比日期时间列快多少?

    这包括两个问题 MySQL的时间戳字段真的比 order by 查询中的日期时间字段快吗 如果上述问题的答案是肯定的 那么速度能快多少 假设在一个有1亿行的表中 经常根据MySQL内部的时间戳字段对一堆100 200k行进行排序 排序时间的
  • 修复 Twitter Bootstrap 中的按钮大小

    I use 推特引导程序 https getbootstrap com 2 3 2 在我的网络应用程序中 我有一张有很多按钮的桌子 按钮的文本随着表行的当前状态而变化 在 Ajax 请求响应之后 我使用 Jquery 更改按钮文本 我的问题
  • Rails - 在控制器中存储 cookie 并从 Javascript、Jquery 获取

    是否可以在控制器中存储用户的 Cookie 或会话 并通过 JS 或 Jquery 访问它来获取 cookie Session值在服务器上可用 你可以这样设置它们在你的控制器中 http apidock com rails ActionCo
  • WPF - 自定义设计音量控制

    我使用 WPF 已经有一段时间了 我需要通过互联网创建以下控件 但找不到合适的 任何人都可以帮助如何实现此功能 单击控件时 值应该增加或减少 我发现我可以使用音量控制或滑块 但不清楚我应该使用什么 谢谢期待 我更喜欢使用进度条来显示此类内容
  • 如何在 Visual Studio 中添加高优先级 TODO 注释?

    添加这样的评论 TODO Refactor this code 在我可以查看的任务列表中创建一个任务等 有一列标记为 让您可以按优先级对这些任务进行排序 如何设置特定任务的优先级 任务的优先级取决于您用来标记它的关键字 您可以通过转到 工具
  • 克隆 TypeScript 对象

    我有一个打字稿课程 export class Restaurant constructor private id string private name string public getId string return this id p