巧用闭包拷贝对象

2023-11-13

 我们知道对象的赋值实际上是赋值它的应用,并没有产生对象的副本。

如:

var p1={x:1,y:2};

var p2=p1;

p2.x ++;

alert(p1.x);  //得出的结果是2,改变p2.x的值,p1.x的值随之改变。

 

当然可以重新new一个对象,但是这样就不是拷贝了。

 

可以用闭包做一个拷贝:

 

function Point(x,y){

    this.x=x;

    this.y=y;

    this.clone=function(){

        return new point(x,y);

    }

}

var p1=new Point(1,2);

var p2=p1.clone();

 

通过闭包再利用p1的构造函数,这样的好处是我们并不需要理会p1的真正属性,只需要把构造函数的参数在clone闭包中原封不动的再传递一次即可。

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

巧用闭包拷贝对象 的相关文章

  • 更改 R 中函数的默认参数

    我正在跟进这个答案 https stackoverflow com a 62946040 7223434 我想知道是否有办法设置参数的默认值rug to FALSE和论证multiline to TRUE在生成的图中library effe
  • 有没有原生 DLL 导出函数查看器? [复制]

    这个问题在这里已经有答案了 是否有免费的本机 Windows DLL 导出函数查看器 它显示函数名称及其参数列表 dumpbin从 Visual Studio 命令提示符处 dumpbin exports csp dll 输出示例 Micr
  • Lambda 演算和教会数字混淆

    我正在尝试了解 lambda 演算和丘奇数字的基础知识 我已经进行了大量的阅读和练习 但我似乎一直试图了解某些函数是如何工作的 我坚持的例子如下 也许有人可以解释我哪里出了问题 1 的丘奇数可以表示为 f x f x The exponen
  • 在函数中声明默认参数在幕后有什么作用?

    这不是调试问题或操作方法问题 这是一个概念性问题 我发现很难理解什么this https developer mozilla org en US docs Web JavaScript Reference Functions Default
  • 通过 Liquibase 从 SQL 脚本创建函数

    项目配置 数据库 MySQL 5 7 orm Hibernate 4 3 11 Final JPA 1 3 1 RELEASE 液体库 3 4 2 当我仅从 Liquibase 从 workBeanch 运行脚本时 我的问题不存在
  • Delphi:平滑折叠/展开形式

    需要你的帮助 我一直在寻找 我在德尔福西雅图 试图平滑调整表单底部的大小 就我而言 调整大小 只是有点折叠 展开 如下所示 我怎样才能意识到这一点 我尝试过使用 TTimer procedure TForm1 Timer1Timer Sen
  • Python执行windows cmd函数

    我知道你可以使用 subprocess 通过 Python 脚本运行 Linux 终端命令 subprocess call ls l for linux 但我找不到在 Windows 上做同样事情的方法 subprocess call di
  • Bash 函数中的返回值

    我正在使用 bash 脚本 我想执行一个函数来打印返回值 function fun1 return 34 function fun2 local res fun1 echo res 当我执行时fun2 它不打印 34 为什么会这样呢 虽然
  • 使用 javascript 更改 onClick 属性

    这是我的函数 它应该更改 HTML 输入的 onClick 属性 但是如果我使用 document getElementById buttonLED id onclick writeLED 1 1 它根本不起作用 但如果我使用 docume
  • GridSearchCV:每次函数完成循环时打印一些表达式

    假设你有一些功能function在Python中通过循环工作 例如 它可以是一个计算某个数学表达式的函数 例如x 2 对于数组中的所有元素 例如 1 2 100 显然这是一个玩具示例 是否可以编写这样的代码 每次function经过一个循环
  • 将带有非字符串关键字的 dict 传递给 kwargs 中的函数

    我使用具有签名功能的库f args kwargs 我需要在 kwargs 参数中传递 python dict 但 dict 不包含关键字中的字符串 f 1 2 3 4 Traceback most recent call last File
  • 在lua中组合两个函数

    我刚开始学习lua 所以我的要求可能是不可能的 现在 我有一个接受函数的方法 function adjust focused window fn local win window focusedwindow local winframe w
  • Javascript:typeof表示“函数”,但它不能作为函数调用

    这次我对 Javascript 真的很困惑 var x Array prototype concat call typeof x function x Uncaught TypeError x is not a function 这里到底发
  • 在 Swift 中将函数作为参数传递

    在 iOS 8 中 我的以下功能按我的预期工作 func showConfirmBox msg String title String firstBtnStr String secondBtnStr String caller UIView
  • 程序如何在Python中的两个函数之间进行选择?

    我有一个 Python 3 2 程序 可以计算未来任意时间段内的投资价值 它可以处理单利和复利 问题是我定义了两个函数 main 和 main2 第一个是简单函数 第二个是复利函数 现在我想做的是 根据用户的一些输入 程序在运行 main
  • 在 C 或 C++ 中返回结构是否安全?

    我的理解是不应该这样做 但我相信我已经看到过这样做的示例 注意代码不一定在语法上正确 但想法就在那里 typedef struct int a b mystruct 然后这是一个函数 mystruct func int c int d my
  • 方案中的尾递归幂函数

    我在方案中编写尾递归幂函数时遇到问题 我想使用辅助函数来编写该函数 我知道我需要一个参数来保存累计值 但在那之后我就陷入了困境 我的代码如下 define pow tr a b define pow tr h result if b 0 r
  • 如何在jquery中创建一个全局函数,并从另一个加载的页面调用它

    如何在 jquery 中声明全局函数 如何从使用 jquery 的 load 函数加载到该页面上的某个 div 中的页面调用它 该功能很简单第 1 个子页面 main links 1st sub page myfun function is
  • 在 Python IDLE 会话中显示用户定义函数的列表

    是否可以在 IDLE 会话中显示所有用户功能的列表 我可以看到它们在自动完成中弹出 所以也许还有其他方法可以只显示为会话定义的用户功能 当您忘记函数名称时 它很有用 而且当您想确保在会话关闭时不会丢失函数的源代码时 这应该为您提供全局范围内
  • Javascript 中“是……的实例”是什么意思?

    这个问题的答案 JavaScript 函数的原型属性的初始值是多少 https stackoverflow com questions 4073677 what is the initial value of a javascript fu

随机推荐

  • 不懂23种设计模式?别灰心,这份核心笔记来帮你,你想知道的都在这里!

    设计模式是软件工程中各种常见问题的经典解决方案 设计模式不只是代码 而是组织代码的方式 假设一行行的代码是砖 设计模式就是蓝图 什么是设计模式 设计模式是解决问题的一种思想 和语言无关 在面向对象软件设计的工程中 针对特定的问题简洁优雅的一
  • Java实现五子棋小游戏(附思路讲解,全部代码,游戏截图)

    本文章是如何实现一个单机版双人五子棋小游戏 通过Swing技术进行可视操作 个人简介 个人主页 码云不秃头 本人是一名大三学生 马上就要变成考研狗啦 通过一学期对Java学习 经过老师的教学 实现单机版的双人五子棋小游戏 大家互相学习 也同
  • 一个web app有多主题,多环境

    在一个web app应用中 需要有多个运行环境 并且每个运行环境主题也是不一样 本项目解决方案 import http es6 ruanyifeng com docs module import ES6 import 可以动态加载 可以利用
  • Extjs入门

    1 什么是Extjs Ext JS 是一个强大的JavaScript类库 提供了丰富且美观的UI组件 和easyUI类似 但更强大 因而使用了Ext JS 您需要写的代码基本上是JavaScript 不需要写HTML 它主要用于创建前端用户
  • LLM推理部署(一):LLM七种推理服务框架总结

    自从ChatGPT发布以来 国内外的开源大模型如雨后春笋般成长 但是对于很多企业和个人从头训练预训练模型不太现实 即使微调开源大模型也捉襟见肘 那么直接部署这些开源大模型服务于企业业务将会有很大的前景 本文将介绍七中主流的LLM推理和服务开
  • 数字电路和模拟电路-10时序逻辑电路的分析和设计

    前言 学习同步时序逻辑电路的分析 设计 一 同步时序逻辑电路的分析 1 时序逻辑电路的分析步骤 步骤一 逻辑图 同步or异步 计数器or状态机 一条总线同步 多条总线是异步 计数器无输入 状态机有输入 状态机还分摩尔型和米里型 步骤二 驱动
  • zotero配置

    1 下载安装 2 配置坚果云同步 编辑 首选项 同步 输入zotero账户密码进行数据同步 文件同步选择坚果云同步 3 配置茉莉花插件 安装pdftk
  • C++-函数模板特化如何避免重复定义

    本文转自 https www cnblogs com dracohan p 3401660 html 转来收藏以便查阅 感谢原作者 另一篇相关博文 https blog csdn net shixin 0125 article detail
  • 【Tensorflow 2.12 电影推荐系统之排序模型】

    Tensorflow 2 12 电影推荐系统之排序模型 学习笔记 导入相关模块 准备数据 加载数据 数据预处理 获取词汇表 构建模型 定义评分排序模型 定义损失函数以及模型评估指标 定义完整的评分排序模型 训练和评估 创建排序模型实例 缓存
  • 2022年大厂Android高级面试题分享,安卓Apk安装过程

    现在的IT行业竞争压力越来越大 尤其是Android开发行业 而很多Android程序员却每天都在重复CRUD 原地徘徊 今年年初 你就想改变现状 于是在网上刷了大量面试题 强行记下之后 开始参加面试 但是你发现 现在的面试 却越来越难了
  • 2017.03 JAVA 面试题 中高级

    2017年3月份 从北京跳槽来到深圳 各种面试 面试的大部分公司都发了offer 现整理出面试的问答题目 如下 一 基础知识 1 集合类 List和Set比较 各自的子类比较 ArrayList Vector LinkedList Hash
  • angular 跨平台&dom操作&组件嵌套&投影

    angular 跨平台 angular 是跨平台的 不仅仅可以再pc端运行 anulgar 为跨平台做的工作 为了能够支持跨平台 Angular 通过抽象层封装了不同平台的差异 比如定义了抽象类 Renderer2 抽象类 RootRend
  • 小程序base64 图片for循环多个展示不了_微信小程序基础之一

    1 微信小程序在wxss中不能直接引用图片 微信小程序在wxss中使用背景图片会报错 渲染层网络层错误 pages demo demo wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片 或者 base64 或者使用
  • Anaconada 几个系统基本命令

    1 python 命令加入系统路径 找出 anaconada 安装路径 打开系统变量并写入该路径即可在系统内运行 python 命令 2 pip 命令写入系统路径 pip 的写入路途则是如下 方法相同 3 conda 的运行 conda c
  • 028.PowerDesigner16:导入SQL脚本、显示中文注释

    导入SQL脚本 生成物理模型 1 击File gt Reverse Engineer gt Database 2 弹出弹窗对模型进行命名 同时在DBMS下拉选择框中需要选择自己对应的数据库类型 点击确定 3 新的弹窗 选中Using scr
  • 西米支付:如何选择自己需求的接口(传奇游戏支付接口)

    传奇游戏是中国网游无法绕过的一座碑 也是千万初代网游玩家的游戏启蒙 2001年一款游戏横空出世 靠着超爽的打击感 和多人同屏战斗迅速在网游火了起来 它就是传奇 随着 传奇 盛大的成长 兴盛与衰弱 一路走来 已经在14年 游戏的充值模式也由以
  • 达梦8常用性能优化相关SQL

    一 内存性能相关 1 1 查看数据库当前运行内存大小 select select sum n pages page size 1024 1024 from v bufferpool MB as BUFFER SIZE select sum
  • 计算shell脚本执行的时间

    我们在使用shell脚本进行一些批量活动的时候 在有的场景下会需要知道脚本执行用了多长的时间 一谈到这个话题 我们一般的想法就是记录时间再开始阶段 执行完成后再记录时间 然后求时间差 这样是可以的 但是要进行格式的转换 比较麻烦 今天我们使
  • Mysql 问题集锦

    一 Host is not allowed to connect to this MySQL server解决方法 1 在安装Mysql数据库的主机上登录root用户 mysql u root p use mysql select host
  • 巧用闭包拷贝对象

    我们知道对象的赋值实际上是赋值它的应用 并没有产生对象的副本 如 var p1 x 1 y 2 var p2 p1 p2 x alert p1 x 得出的结果是2 改变p2 x的值 p1 x的值随之改变 当然可以重新new一个对象 但是这样