JS对象引用

  • 对象和函数都是引用的关系(改变后者会改变前者)
  • 但是下面这个列子情况不一样了。刚开始的时候 B 引用了 A的地址,后来B又重新赋值,新占了一个地址,A   B俩的关系已经脱离。
  • 那么有的时候,我们只有复制一个对象,而修改这个新对象的时候不希望影响原来的对象。如下:(浅拷贝,只能拷贝一层,深层次的对象还是引用关系)
  • 递归:
  • 1. 函数调用函数自身,执行递的动作。
  • 2.最后一次判断一个终止条件,可以执行归的动作。
  • 深拷贝:
时间: 2024-12-28 16:06:03

JS对象引用的相关文章

深度克隆---js对象引用

首先,我们要知道,javascript中除了基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说就是js对象了. 引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响. 在探讨到深度克隆之前,我们先来看一下下面的例子: example01: 1 var a = [1,2,3]; 2 var b = a; // a b共用一个引用 3 b.push(4); 4 alert(b); // [1

js对象引用传递

今天写接口测试demo,发现js值引用问题 js 普通变量为值传递 js 对象为为引用传递 var a = 123; undefined var b=a; undefined a 123 b 123 b =234 234 a 123 a = 456 456 b 234 var o = {name:'lxb',age:21} undefined h = o Object { name: "lxb", age: 21 } h.width = 20 20 o Object { name: &

JS 对象引用和深拷贝

1 var a = XX; 2 var b = a; 如果a是基本类型,则为值拷贝:如果a是对象,则是引用拷贝. 1.深拷贝 1 function deepCopy(obj) { 2 if (typeof obj != 'object') 3 return obj; 4 5 var newObj = {}; 6 for (var attr in obj) { 7 newObj[attr] = deepCopy(obj[attr]); 8 } 9 return newObj; 10 }

vue 1.0源代码重点难点分析

vue初始化根组件的入口代码: 对于没有路由的单页应用来说,入口就是new Vue(options),options就是根组件代码,对于有路由的项目来说,入口就是router.start(app),其中app是根组件. function Router() {} // router构造函数var router = new Router(); // new router实例router.start(app); // 项目真正的入口 Router.prototype.start = function

[ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用 (转)

ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种的类型特点来命名的,大家爱叫啥就叫啥吧 o(╯□╰)o . 1.基本类型 基本的数据类型有:`undefined,boolean,number,string,null.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值.基本类型有以下几个特点: 1.基本类型的值是不可变得: 任何方

[ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用

ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种的类型特点来命名的,大家爱叫啥就叫啥吧 o(╯□╰)o . 1.基本类型 基本的数据类型有:`undefined,boolean,number,string,null.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值.基本类型有以下几个特点: 1.基本类型的值是不可变得: 任何方

js中对象引用出现的问题

先看代码 1 <script type="text/javascript"> 2 var a = [1,2,3,4]; 3 var b = [1,2,3,4]; 4 console.log(a==b); //出现false,按照常规理解,a和b应该是一样的,都是[1,2,3,4] 5 </script> 再看代码 <script type="text/javascript"> var a = 3; var b = 3; conso

js 不可变的原始值和可变的对象引用

javascript中的原始值(undefined.null.布尔值.数字和字符串)与对象(包括数组和函数)有着根本区别.原始值是不可更改的:任何方法都无法更改(或“突变”)一个原始值.对数字和布尔值来说显然如此----改变数字的值本身就说不通,而对字符串来说就不那么明显了,因为字符串看起来像由字符组成的数组,我们期望可以通过指定索引来假改字符串中的字符.实际上,javascript是禁止这样做的.字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值. 代码如下: 1

js对对象引用

var a = [1,2,3];var b = a; b.push(4); console.log(a);//[1,2,3,4]var a = [1,2,3];var b = a; b=[1,2,3,4];//改变了引用地址 console.log(a);//[1,2,3]// 浅拷贝var a = {};var b = {name:"hello"};function copy(obj){ var newObj = {}; for(var attr in obj){ newObj[at