- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这是 My Old Question 的延续
这是我创建一个新学生对象的函数:
function student(id, name, marks, mob, home){
this.id = id;
this.name = name;
this.marks = marks;
this.contacts = {};
this.contacts.mob = mob;
this.contacts.home = home;
this.toContactDetailsString = function(){
return this.name +':'+ this.mob +', '+ this.home
}
}
我想在对象内部初始化时创建对象的副本:我想到了这个:
function student(id, name, marks, mob, home){
this.id = id;
this.name = name;
this.marks = marks;
this.contacts = {};
this.contacts.mob = mob;
this.contacts.home = home;
this.toContactDetailsString = function(){
return this.name +':'+ this.mob +', '+ this.home
}
this.baseCopy = this; //Not sure about this part
}
但问题是它在 baseCopy 中给了我当前对象副本的无限循环;并且当我更新对象的任何属性时它也会自动更新。
<强>1。这怎么可能使得我可以在创建对象时在该对象内部保留具有初始值的对象副本?
<强>2。是否可以不复制函数
<强>3。我很好奇,如果不对属性名称进行硬编码并使用纯 JS,这是否可行
最佳答案
与我对您上一个问题的回答非常相似,您可以使用此代码复制对象及其嵌套属性,而不是复制它的函数:
function student(id, name, marks, mob, home){
this.id = id;
this.name = name;
this.marks = marks;
this.contacts = {};
this.contacts.mob = mob;
this.contacts.home = home;
this.toContactDetailsString = function(){
return this.name +':'+ this.mob +', '+ this.home
}
// Copy the object to baseCopy
this.baseCopy = clone(this); // "clone" `this.baseCopy`
}
function clone(obj){
if(obj == null || typeof(obj) != 'object'){ // If the current parameter is not a object (So has no properties), return it;
return obj;
}
var temp = {};
for(var key in obj){ // Loop through all properties on a object
if(obj.hasOwnProperty(key) && !(obj[key] instanceof Function)){ // Object.prototype fallback. Also, don't copy the property if it's a function.
temp[key] = clone(obj[key]);
}
}
return temp;
}
var s = new student(1, 'Jack', [5,7], 1234567890, 0987654321);
s.marks = s.marks.concat([6,8]); // Jack's gotten 2 new marks.
console.log(s.name + "'s marks were: ", s.baseCopy.marks);
// Jack's marks were: [5, 7]
console.log(s.name + "'s marks are: ", s.marks);
// Jack's marks are: [5, 7, 6, 8]
console.log(s.baseCopy.toContactDetailsString); // check if the function was copied.
// undefined
console.log(s.baseCopy.contacts.mob);
// 1234567890
(我将处理深拷贝一秒钟)
“深层”副本现在应该可以工作了。
关于javascript - 我可以在对象创建时保留该对象的副本吗 - 续 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969104/
当我的测试用例挂起时,我设法生成了线程转储。但是,这似乎不是死锁、竞争条件或资源争用。但是在我的加载测试工具中使用 3 个虚拟用户运行测试用例时,它肯定会挂起。任何人都可以在这里指出我正确的方向吗?干
复制代码 代码如下: #!/usr/bin/perl use File::DirWalk; use File::Basename; use Data::Dumper; use warnings;
个人认为影响的原因: 匹配到的图片url并不是有效的url,文中只是简单的判断是否是相对路径,但是有些url是失效的 解决办法:就是新增判断是否是真实有效url的图片 复制代码
考虑到这个问题:Passing a Shapeless Extensible Record to a Function,Travis的答案表明,每个以可扩展记录为参数的函数都必须有一个隐式选择器作为参
我通过这样的套接字发送ascii: outputStreamWriter(s + (char) 13); outputStreamWriter.flush(); 在现场,flush() 和通过网络发送
在我们正在进行的重构练习中,我们必须更改选定网站的页面模板。大多数页面都被本地化并通过下面的代码更新了他们的页面模板,但对于一些我们得到以下错误: “名称、文件名对于以下类型的项目必须是唯一的:其结构
我知道已经有Default value on generic predicate as argument了。 但是,也许现在c++ 11,c++ 14或c++ 17有了新的选择? 我如何才能使这项工作
select sum(case when NumFirstNames <> 1 then 1 else 0 end) as DifferentFirstNames, sum(case when
我已将:根证书、中间证书、服务器证书导入 Tomcat for Windows 的 Java Keystore。 这些是 VeriSign(商业)证书.. 我们不能将 keyAlias 用于连接器 -
我的问题是基于这个问题:Correct way to inherit from a virtual class with non-virtual parent . 我的理解是否正确,在问题中描述的情况
我不确定是否需要使用像 PLINQ 这样的高级技术,因为我想重新表述我之前的问题 Paralleling trading software我认为我之前的问题太复杂而且不清楚,我希望现在我准确地提取了所
这是我在这里遇到的问题(仍未解决)的延续:link 但这可能有助于理解问题所在。我只创建了一个简单的测试项目('Empty Application')并添加了一个带有 XIB 文件的 View Con
好的,所以昨天我发布了一个关于创建一个模拟电影矩阵雨的 java jframe 的问题,我希望它就像这个 php 示例一样 http://mgccl.com/2007/03/30/simple-ver
从这个线程继续: What are good algorithms for vehicle license plate detection? 我开发了我的图像处理技术来尽可能强调车牌,总体而言我很满意
这个问题在我这里的问题上继续(根据 Mystical 的建议): C code loop performance 继续我的问题,当我使用打包指令而不是标量指令时,使用内部函数的代码看起来非常相似: f
这是 My Old Question 的延续 这是我创建一个新学生对象的函数: function student(id, name, marks, mob, home){ this.id =
建立在我的 last question我想弄清楚如何.local和 .comm指令准确地工作,特别是它们如何影响 C 中的链接和持续时间。 所以我进行了以下实验: static int value;
这个问题引用这个之前的one由 Christian Metzler 在 SO 上发布. 我唯一非常有限的关于注解的经验包括使用最近 Delphi 版本中引入的 CustomAttribute。 我的问
我正在使用 Jetty 和 Continuations 来实现长轮询,但我没有找到检测客户端断开连接的方法。 我知道,在第一次运行(创建 Continuation)和任何后续运行之间的时间里,由于 H
这是 CSS Display an Image Resized and Cropped 的延续.该用户的答案似乎没问题,但我需要一些帮助来改进该答案... 问:resize(缩放)如何在运行时与图像的
我是一名优秀的程序员,十分优秀!