`
ysj_csdn
  • 浏览: 6401 次
社区版块
存档分类
最新评论

javascript对象引用与赋值

阅读更多

javascript对象引用与赋值

 

javascript对象引用与赋值

<script type="text/javascript">

//例子一: 引用

var myArrayRef = new Array(0,1,2); //创建数组对象

var mySeconArrayRef = myArrayRef; // 对象复制.

myArrayRef[0] = 100; // 修改元素值

alert(mySeconArrayRef[0]);

/**

* 输出 100; 学过其它语言的都应该知道这里应该输出的是0 为什么输出的是100呢?

* 上面程序通过把myArrayRef对象复制给了mySeconArrayRef这时就存在了2个独立的 但最初值是相同的对象

* 因为是独立的为什么修改myArrayRef会对别一个对象有影响呢?大家都知道只有当他们引用的是同一个对象时这时修改一个才会

* 对别一个产生影响.但是在javascript语言中创建的对象myArrayRef值中其时保存的是对象的引用(也就是一个地址).

* 也就是 我用 new Array生成的保存在内存中而new Array把它所在的地方告诉了myArrayRef,myArrayRef又把这地址告诉了mySeconArrayRef

* 他们两个都指向的是new Array生成对象的地址而不是把对象保存在myArrayRef中,所以通过其中的一个去修改值时其时是修改他们同指象的那对象.

*/

alert(mySeconArrayRef[0] );

//例子二: 赋值

var myVa = 'ABC'; //把ABC的值 赋予了myVa

var myVb = myVa; // myVa 赋值给 myVb

myVa = 'DEF'; //修改myVa

/**

* 输出的是:ABC. 因为是把值保存在了变量了 而不是保存的是引用地址,所以他们两个是相对独立的整体.

*/

alert(myVb);

</script>

如果真要复制对象互不影响,则要通过转换赋值或者遍历key:value来复制你中的方法和属性。

注意:对象的子对象也是引用,所以遍历赋值的时候要判断,子元素是否是对象,如果子元素是对象,则继续对子元素进行遍历赋值。
转换赋值方式:

复制代码
var data = {a:1,b:2,c:3,d:[0,1,2,3]};
var str = JSON.stringify(data);
var data1 = $.parseJSON(str); //$为jQuery对象需要引入jQuery包
data1["e"] = 4;
data1["d"][0] = 11;
console.log(data);
console.log(data1);
复制代码

输出结果:
{a1b2c3d: [0,1,2,3]}
{a1b2c3d: [11,1,2,3], e: 4}

相互没有影响

 

当对象引用做为函数参数传递时候,依然会相互影响,切记,如下示例:

 

 

复制代码
var data = {a:1,b:2,c:3,d:{q:4,w:5,e:6}};
var data1 = data;
function con(data2){
data2["r"] = 5;
console.log(JSON.stringify(data2));
}
con(data1);
console.log(JSON.stringify(data));
复制代码

输出结果:

{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
 
对象引用赋值后,如果将对象置空,相互间是不受影响的,如下:
var arr = {"a":"1","b":"2"};
var arr1 = arr;
arr = {};
arr["a"] = 2;
console.log(arr1);
console.log(arr);

输出结果:{"a":"1","b":"2"},{"a":2}

分享到:
评论

相关推荐

    JavaScript对象引用与赋值实例详解

    本文实例讲述了JavaScript对象引用与赋值。分享给大家供大家参考,具体如下: [removed] //例子一: 引用 var myArrayRef = new Array(0,1,2); //创建数组对象 var mySeconArrayRef = myArrayRef; // 对象复制. ...

    JavaScript对象拷贝与赋值操作实例分析

    在JavaScript编程中,对象拷贝与赋值是经常会用到的操作,但这两者是有显著区别的。对象赋值通常意味着让一个变量引用另一个已经存在的对象,也就是在内存中两个变量指向同一个对象的地址。而对象拷贝则是创建一个新...

    JavaScript对象模型

    - **Null**: 特殊的空值,通常用于表示空的对象引用。 - **Boolean**: 布尔型数据,值只能为`true`或`false`。 - **Number**: 数字类型,可以表示整数和浮点数。 - **String**: 字符串类型,用于表示文本数据。 ...

    JavaScript对象的特性与实践应用深入详解

    JavaScript对象是一种非常重要的数据结构,它在JavaScript编程中扮演着核心角色。通过理解JavaScript对象的特性和实践应用,开发者能够更加灵活高效地操作数据和实现各种功能。 首先,JavaScript对象可以包含属性和...

    js 对象、数组赋值不指定路径(简洁写法).pdf

    在JavaScript中,对象和数组的赋值操作与基本数据类型如字符串、整数或布尔值的赋值有所不同。这是因为在JavaScript中,对象和数组是引用类型,它们在内存中分配的位置是固定的,赋值实际上是复制了对这个内存位置的...

    JavaScript面向对象基础.ppt

    在JavaScript中,对象的废除主要是通过设置对象引用为null,但实际的垃圾回收机制取决于引擎。 8.2.4 对象的早绑定和晚绑定 JavaScript采用动态绑定,即晚绑定,意味着在运行时决定方法调用的对象。 8.3 ...

    javascript实现连续赋值

    总结来说,JavaScript中的连续赋值是一个涉及变量赋值顺序、对象引用传递、以及对DOM元素属性操作的综合性知识点。理解这些概念,以及JavaScript中的赋值运算特性,对于编写高效且可维护的JavaScript代码至关重要。

    07-对象赋值.md

    4. 值类型与引用类型的区别:在JavaScript中,基本数据类型(如Undefined, Null, Boolean, Number, String, Symbol, BigInt)是按值传递的,这意味着在赋值时,实际是将值的副本赋给新的变量。而引用类型(如Object,...

    JavaScript对象模型-执行模型

    JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...

    JavaScript对象共6页.pdf.zip

    JavaScript对象是编程语言JavaScript中的核心概念,它在Web开发中起着至关重要的作用。JavaScript是一种基于原型的动态类型语言,其对象系统是其灵活性和强大功能的基础。在深入理解JavaScript对象之前,我们需要先...

    JavaScript对象拷贝与Object.assign用法实例分析

    在JavaScript中,实现深拷贝的方法包括递归复制、使用`JSON.parse(JSON.stringify(obj))`(适用于没有函数和循环引用的对象)以及使用某些库(如lodash的`_.cloneDeep()`)。 `JSON.parse(JSON.stringify(obj))`...

    面向对象javascript

    null表示一个变量不对应任何的值或对象,而undefined表示一个变量未定义或未赋值。 函数在JavaScript中是一种特殊的对象类型,可以作为值赋给变量、作为参数传递给另一个函数、或作为其它函数的返回值。函数对象...

    javascript对象使用.doc

    this关键字在JavaScript中表示当前上下文的对象,这在多层对象引用中尤其有用。当在一个事件处理函数中使用this,它通常指向触发该事件的元素,例如`onselect=bb(this)`中的`this`指的是选中的文本框。 4. New...

    JavaScript对象与数组参考大全

    以下是对JavaScript对象与数组的详细解析。 ### JavaScript对象 #### 1. 对象的定义 JavaScript对象是由键值对构成的无序集合,可以看作是关联数组。创建对象主要有三种方式:字面量语法、构造函数以及Object....

    javascript引用赋值(地址传值)用法实例

    JavaScript中的引用赋值,也称为“地址传值”,是一种特殊的数据传递方式,它涉及到对象、数组和函数等复杂数据类型的赋值操作。在JavaScript中,基本类型如字符串、数字和布尔值是通过值来传递的,而引用类型则是...

    《JAVASCRIPT语言精髓与编程实践》.周爱民PDF

    1. **基础语法**:JavaScript的基础语法包括变量声明(var、let、const)、数据类型(原始类型和引用类型)、运算符(算术、比较、逻辑、赋值等)、流程控制(条件语句、循环语句)以及函数定义等。书中会详细介绍...

    JavaScript中函数与对象的解析.pdf

    JavaScript 中函数与对象的解析 JavaScript 中的函数与对象是掌握 JavaScript 语 言的基础。JavaScript 语 言与 C++、Java 等语 言在语法上类似,但其函数具有独特性。本文将深入了解 JavaScript 语言中的函数与...

    利用原生循环依赖关系序列化复杂JavaScript对象或ES6类

    本篇文章将深入探讨如何利用原生循环依赖关系来有效地序列化复杂JavaScript对象和ES6类。 首先,我们需要理解JavaScript中的引用类型和作用域。在JavaScript中,对象是引用类型,这意味着当你创建一个新对象并将其...

    08-对象属性赋值.md

    - `WeakMap`则是一种特殊类型的`Map`,它只接受对象引用作为键,并且这些对象引用是弱引用。弱引用意味着如果对象没有其他的强引用,那么它会自动被垃圾回收机制清除。`WeakMap`的键只能是对象类型,不能使用值类型...

Global site tag (gtag.js) - Google Analytics