引用与复制

引用与复制(传值与传值)

引用:对象、数组、函数

复制:数字、布尔、字符串

引用:

1 var a = [1,2,3];
2 var b = a;
3 b.push(4);    //引用对自身的修改会影响其引用的对象(函数除外)
4 alert(a);     //[1,2,3,4]
var a = [1,2,3];
var b = a;
b = [1,2,3,4];        //引用的重新赋值不会影响它原来的对象,这里相当于断开了原来的引用,新增了新的引用
alert(a);      //[1,2,3]

【注】函数的引用修改不起作用,只能赋值

时间: 2024-11-05 14:53:29

引用与复制的相关文章

JavaScript语法细节——引用与复制

原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关知识,可能会不定期增加新碰到的问题,有错误希望看到的人指出,避免传播不正确的知识. 先大致分一下类,引用类型:Object以及其旗下的Array,Date,RegExp,Function:基本包装类型:Boolean,number,String. 在赋值与传递参数的时候,引用类型传递的是指针,基本包

C++学习体会--引用方式复制类对象

C++学习体会--引用方式复制类对象 引用的重要性实际体现在函数的形参和函数的返回值.一般引用也只是出现在这两个地方. 引用方式的好处,如果是体现在形参,在使用函数的时候,实参必定会初始化形参,如果不加引用,系统会创建实参的副本将值传递给形参,这样会造成资源额外的占用.为了节省资源的占用,通过一种引用的方式,达到这个效果,因为引用知识将实参的地址给了形参,处理形参,如同处理实参. 下面将给出程序使用的例子:引用的重要性体现在形参上 #include <iostream> using names

python中的引用和复制

对象引用 >>> a = [1,2,3,4] >>> b = a >>> b is a True >>> b[2] = -100 >>> b [1, 2, -100, 4] >>> a [1, 2, -100, 4] a和b引用的是同一个对象,修改其中的一个将影响另一个. 对于像列表和字典这样的容器对象,可以使用浅复制和深复制. 浅复制 浅复制可以创建一个新对象,包含的是对原始对象中包含的项的引用:

python 列表和字典的引用与复制(copy)

列表或字典的引用: 引用针对变量的时候,传递引用后,对引用后的对象的值进行改变是不会影响到原值的:而列表不一样如: spam =42 cheese = spam spam =100 print(spam)      #out:100 print(cheese)   #out:42 如果对列表进行引用会是什么情况呢,我们来看看 spam = [0,1,2,3,4,5]cheese = spamprint(spam)cheese[1] = 'hello'print(spam)print(cheese

类的引用和复制

#include<iostream> using namespace std; class base{ public: base(){} virtual void func(int i = 12) { cout<<"base "<<i<<endl; } }; class Derived:public base{ public: Derived(){} virtual void func(int i = 22) { cout<<

整理Javascript基础数据和引用数据复制值的问题

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; color: #000000 } span.s1 { } Javascript数据分为两大类:1.基础类型(原始类型数据) 2.引用类型.他们的存储方式是不同的 基础类型的数据存储是保存在栈内存中的: 例如:

Python引用复制,参数传递,弱引用与垃圾回收

引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产生了无限递归.上述示例表明Python中的变量名为引用类型,赋值只是使得左值指向与右值相同的内存对象. is运算符可以判断两个引用是否指向了同一个对象,而==运算符判断两个引用指向的值是否相等而不关心指向什么对象. 对引用不了解的朋友,可以把Python引用与C/C++中的void *类比,不过因为垃圾回收机

原型模式——浅复制与深复制

原型模式涉及一个浅复制和深复制的概念.原型模式可以简单理解为“复制”,但这个复制不是代码的复制.对同一个类,我们可以实例化new三次来“复制”,但如果在初始化的时候构造函数的执行很长,多次实例化就显得效率很低效了.那我们能否只实例化一次,然后“复制”呢? Test test1 = new Test(); Test test2 = test1; Test test3 = test1; 这样写吗?注意这是引用的复制,这实际上还是只有test1一个实例,test2.test3只是复制了其引用而已,如果

也来谈一谈js的浅复制和深复制

1.浅复制VS深复制 本文中的复制也可以称为拷贝,在本文中认为复制和拷贝是相同的意思.另外,本文只讨论js中复杂数据类型的复制问题(Object,Array等),不讨论基本数据类型(null,undefined,string,number和boolean),这些类型的值本身就存储在栈内存中(string类型的实际值还是存储在堆内存中的,但是js把string当做基本类型来处理 ),不存在引用值的情况. 浅复制和深复制都可以实现在已有对象的基础上再生一份的作用,但是对象的实例是存储在堆内存中然后通