`

JS Reference 引用例子

 
阅读更多
/*正常的情况*/
var a = 5;
var b = a;

b += 3;

alert(b);  //8
alert(a);  //5



//对象和函数都是引用的关系
var a = [1,2,3];
var b = a;

b.push(4);

alert(b); //1,2,3,4
alert(a); //1,2,3,4*/

//数组重新写
var a = [1,2,3];
var b = a;
b = [1,2,3,4];

alert(b);  //1,2,3,4
alert(a);  //1,2,3

/*对象赋值*/
var obj = {
	a : 10
};
var obj2 = obj;

obj2.a = 20;

alert(obj.a);  //20*/

//赋值解决方案
var obj = {
	a : 10
};

function copy(obj){  //浅拷贝
	
	var newObj = {};
	
	for(var attr in obj){
		newObj[attr] = obj[attr];
	}
	
	return newObj;
	
}

var obj2 = copy(obj);

obj2.a = 20;

alert(obj.a);  //10

//解决方案二
function deepCopy(obj){  //深拷贝

	if(typeof obj != 'object'){
		console.trace();
		return obj;
	}
	
	var newObj = {};
	
	for(var attr in obj){
		newObj[attr] = deepCopy(obj[attr]);
	}
	
	return newObj;
	
}

var obj2 = deepCopy(obj);

obj2.a.b = 20;

alert(obj.a.b);  //10

分享到:
评论

相关推荐

    深入理解JavaScript中的传值与传引用

    在`testPassValue`的例子中,`date`对象的引用被传递,`passReference`函数内的`da.setDate(12)`会改变原始`date`对象的日期属性。然而,如果像`changeReference`函数那样,将`da`指向一个新的对象,原对象不会受到...

    Javascript中引用示例介绍

    在Javascript脚本中,参数的引用原则:引用的参数内部(如属性)可以修改,但参数对应的引用(reference)不能修改。 一个测试例子如下: 代码如下: [removed] //dosomething1,对于引用,变量本身不可以修改,但变量...

    mongoose-schema-reference-sample:显示猫鼬架构引用的用法

    在上面的例子中,`UserSchema`有一个名为`orders`的字段,它包含了`Order`模型的引用。这样,当我们查询用户时,可以利用Mongoose的population功能来自动填充引用的订单信息,无需手动执行多次数据库查询。 使用`...

    头歌教学实践平台 Web前端开发基础 JavaScript 学习手册二:JS 数据类型

    在JavaScript中,数据类型主要分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。基本数据类型包括: 1. **Undefined**:未定义,当变量被声明但未赋值时,其值为...

    JS中原始值和引用值的储存方式示例详解

    在JavaScript中,值有两种主要类型:原始值(Primitive Values)和引用值(Reference Values)。原始值,也称为基本数据类型,包括Number、String、Boolean、Null和Undefined。这些类型的值直接存储在内存的栈...

    悟透JavaScript

    JavaScript的数据类型分为两大类:原始类型(Primitive Types)和引用类型(Reference Types)。原始类型包括undefined、null、boolean、number和string,以及在ES6中新增的symbol和BigInt。其中,undefined表示...

    【JavaScript源代码】js闭包和垃圾回收机制示例详解.docx

    常见的垃圾回收算法包括标记清除(Mark and Sweep)、引用计数(Reference Counting)等。 ##### 2.1 垃圾回收机制 JavaScript 的垃圾回收机制主要通过以下步骤完成: 1. **标记**:垃圾回收器会标记所有从根节点...

    Web分页控件例子Demo

    可能包含了项目引用的外部库或DLL文件,例如ASP.NET框架、jQuery或其他JavaScript库,这些库可能被用来增强分页控件的功能,如动画效果、AJAX支持等。 8. **实现分页控件的关键技术**: - HTML/CSS用于构建分页的...

    JavaScript权威指南(第6版)

    他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省理工学院,获得计算机科学与工程学位。他和妻子和孩子一起...

    js代码-数组引用陷阱 reverse reverse() 方法将数组中元素的位置颠倒,并返回该数组的引用

    在JavaScript中,有两种基本的数据类型:原始类型(Primitive Types)和引用类型(Reference Types)。原始类型包括布尔值(Boolean)、数字(Number)、字符串(String)、空(null)、未定义(undefined)以及ES6...

    JavaScript权威指南(第6版)(附源码)

    他在O’Reilly出版的其他畅销书还包括《JavaScriptPocket Reference》、《The Ruby Programming Language》、以及《Java in aNutshell》。David毕业于麻省理工学院,获得计算机科学与工程学位。他和妻子和孩子一起...

    JavaScript权威指南(第6版)(中文版)

    他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省理工学院,获得计算机科学与工程学位。他和妻子和孩子一起...

    JS是按值传递还是按引用传递

    按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。   按引用传递会使函数调用的追踪更加困难,有时也会...

    javascript中BASE标签作用

    在这个例子中,`<base>`标签设置的基准URL是`http://msdn.microsoft.com/workshop/author/dhtml/reference/`。因此,当`<a>`标签中的`href`属性值为`properties/href_2.asp`时,实际访问的URL将会是`...

    ArcGIS API for JavaScript 开发教程.rar

    Esri提供了CDN服务,可以直接引用官方的库文件,也可以下载本地库文件进行离线开发。 **3. 创建地图** 创建地图是使用API的基础,通过`esri.Map`对象实例化一个地图,并指定容器元素(如div id)以及初始的基图或...

    跟我学习javascript的基本类型和引用类型

    JavaScript是一种动态类型语言,它的数据类型分为两大类:基本类型(Primitive Types)和引用类型(Reference Types)。在JavaScript中,基本类型包括undefined、boolean、number、string和null。这些类型在内存中...

    JavaScript中的值是按值传递还是按引用传递问题探讨

    这个问题涉及到两种主要的传递方式:按值传递(call by value)和按引用传递(call by reference)。此外,JavaScript中还有一种特殊的传递方式,称为按共享传递(call by sharing)或者按对象传递(call by object...

Global site tag (gtag.js) - Google Analytics