2 liqiangzh126 liqiangzh126 于 2016.03.30 10:03 提问

js 如何获取引用传递的值

复杂类型如Object的传递是引用传递,如何获得相同值的独立的一份拷贝呢?

5个回答

showbo
showbo   Ds   Rxr 2016.03.30 10:18
已采纳

如果不包含函数,可以JSON.stringify转为字符串,在JSON.parse刚才生成的字符串得到,否则就要for深度拷贝http://snandy.iteye.com/blog/842097

showbo
showbo $('#xxxxx').clone(true).appendTo(document.body)
2 年多之前 回复
showbo
showbo 回复Ultimate_Redx: html对象直接clone就行了。JSON对象数据那种可以JSON.stringify
2 年多之前 回复
liqiangzh126
liqiangzh126 JSON转换好像会出问题,我尝试的是Jquery获取的html对象,这样转换之后完全不对了。
2 年多之前 回复
w172087242
w172087242   Ds   Rxr 2016.03.30 10:18

遍历原型链prototype,如果对象里面还有对象,就需要深层复制。
然后将prototype的属性和值分别赋给新对象,这样操作才不会改变原有对象属性的值,而且也保留了源对象的信息,
对象内部没有在原型链上的方法或者变量,则原型链复制就是不可见的,这样的可以用源对象的构造器构造新对象,保持私有属性的可用。

希望可以帮到你。

liqiangzh126
liqiangzh126   2016.03.30 10:46

刚刚找到一个简单的方法,Jquery的 clone()
不知道是否对所有对象都有效

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:32

js 原始值和引用传递
js数组引用传递
JS获取页面传递(REQUEST)值
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

somnus3421
somnus3421   2016.03.31 03:18
 JSON.stringify(objcet)

然后在再转回对象,对性能影响其实蛮大的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JS值传递和引用传递出现的问题
JavaScript 引用传递容易导致代码逻辑错误。
JS是按值传递还是按引用传递?
数据类型 在 javascript 中数据类型可以分为两类: 原始数据类型值 primitive type,比如Undefined,Null,Boolean,Number,String。引用类型值,也就是对象类型 Object type,比如Object,Array,Function,Date等。 声明变量时不同的内存分配 原始值:存储在栈(stack)中的简单数据段,也就是说
JavaScript进阶(三) 值传递和引用传递
从C语言开始
以js为例解释按值传递和按引用传递
引用大神的一篇文章,个人觉得写得极好,故记录下来。点击打开链接 首先“ EMCAJavaScrip里面所有函数的参数传递都是按值传递” 这句话是公认的,没错的。 按值传递的意思就是形参是实参的复制。 按引用传递是 函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。 但是由于js中有简单数据类型,复杂数据类型。简单数据类型不用细
JS 获取编辑器的值....
JS 获取编辑器的值....JS 获取编辑器的值....JS 获取编辑器的值....JS 获取编辑器的值....JS 获取编辑器的值....
call by sharing——JavaScript中“共享传递”、“按值传递”、“按引用传递”
call by sharing——JavaScript中“共享传递”、“按值传递”、“按引用传递”
javascript中值传递,地址传递,引用传递的问题。
js中存在值传递和地址传递:JS中的基本类型按值传递,对象类型按地址传递,这句话也对,但是也不对,具体看你怎么去操作传过的参数对象了。push()方法有时候会出写奇妙的问题。
js如何调用单选按钮
js如何调用单选按钮,如何获取单选按钮的值 ,实例 说明
JS 中没有按地址(引用)传递,只有按值传递
很多人,包括我,受书本知识消化不彻底的影响,认为 JS 中参数有两种传递方式:数字、字符串等按值传递;数组、对象等按地址(引用)传递。对此种观点,我们要谨慎。 var v1 = [] var v2 = {}; var v3 = {}; function foo(v1, v2, v3) {     v1 = [1];     v2 = [2];     v3 = {a:3} }
jquery解决js对象、数组赋值时的引用传递
var newObject = jQuery.extend(true, {}, oldObject);通过jquery的extend方法,将oldObject合并到一个新的空对象, 以实现js对象、数组赋值时由于引用传递,造成改变newObject时,oldObject也跟着改变