在js中 简单类型是值传递 复杂类型是引用传递

  简单类型:String Number Boolean undefined Null

  复杂类型:Object

下面的代码演示这个

    var simpleName = "cindy";
var obj = {
"name":"radish",
"age":24
};
var list = [
obj,
{
"name":"ruby",
"age":22,
"friends":[obj, "cindy"],
sayHello:function () {
alert("hello" + this.friends);
}
}];
//深拷贝 不受影响
console.log(markName(deepCopy(simpleName),"_js"));//cindy_JS
console.log(simpleName);//cindy
//未拷贝 也没变化
//console.log(markName(simpleName,"_js"));
//console.log(simpleName); //深拷贝 不受影响
console.log(markName(deepCopy(obj),"_js"));
console.log(obj);
//未拷贝 对象被改变
//console.log(markName(obj,"_js"));
//console.log(obj); //深拷贝 不受影响
console.log(markName(deepCopy(list), "_js"));
console.log(list);
//未拷贝 对象被改变
//console.log(markName(list,"_js"));
//console.log(list); //给对象的name属性添加_JS后缀
function markName(source, flag) {
var type = typeof source, simpleType = ["string", "number", "boolean"];
if (!source) {
return source;
} else if (-1 != simpleType.indexOf(type)) {
return source + flag;
} else {
for (var i in source) {
source[i] = typeof source[i] === "object" ? markName(source[i], flag) : "name" == i ? source[i] + flag : source[i];
}
return source;
}
}
;
//深拷贝对象
function deepCopy(obj){
var type = typeof obj, simpleType=["string","number","boolean"], rs;
if(obj){
if(-1!=simpleType.indexOf(type)){
rs = obj;
}else{
rs= obj.constructor === Array? []:{};
for(var i in obj){
if(obj.hasOwnProperty(i)){
rs[i] = typeof obj[i]==="object"? deepCopy(obj[i]):obj[i];
}
}
}
}else{
rs = "error";
}
return rs;
}

javascript 值传递的更多相关文章

  1. JavaScript | 值传递、引用传递的区别

    值传递 JavaScript值传递的数据类型:字符串(String).数字(Number).布尔(Boolean).空(Null).未定义(Undefined), 这五种数据类型是按值访问的,因为可以 ...

  2. JavaScript值传递和引用传递

    1、数据类型:boolean,null,undefined,String,Number,指向包含的数据,进行“值传递”: 2.非数据类型:Array,Function,Object,指向了一个内存地址 ...

  3. javascript中值传递与值引用的研究

    今天重新看了一下<javascript高级程序设计>,其中讲到了javascript中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...

  4. JavaScript 函数参数传递到底是值传递还是引用传递

    tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...

  5. JavaScript传递变量:值传递?引用传递?

    今天在看 seajs-2.2.1/src/util-events.js源码,里面有段代码不是很理解: var events = data.events = {} // Bind event seajs ...

  6. 6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递

    JavaScript函数:使用关键字function定义,也可以使用内置的JavaScript函数构造器定义 匿名函数: 函数表达式可以存储在变量中,并且该变量也可以作为函数使用. 实际上是匿名函数. ...

  7. JavaScript进阶(三) 值传递和引用传递

    从C语言开始 有时候讲一些细节或是底层的东西,我喜欢用C语言来讲,因为用C更方便来描述内存里面的东西.先举一个例子,swap函数,相信有一些编程经验的人都见识过,声明如下,函数体我就不写了,各位脑补一 ...

  8. JavaScript基础之值传递和引用传递

    js的值传递和引用(地址)传递 首先总述一下:js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,js的引用数据类型(object, ...

  9. JavaScript中函数参数的值传递和引用传递

    结论: 对于数字.字符串等基本类型变量,是将它们的值传递给了函数参数,函数参数的改变不会影响函数外部的变量. 对于数组和对象等是将对象(数组)的变量的值传递给了函数参数,这个变量保存的指向对象(数组) ...

随机推荐

  1. Html5NodeJs安装less之千辛万苦CMD系列

    如题,这个东西很是费了一般脑筋 上一次讲了如何在浏览器端解析less文件,这次是在cmd中使用npm中的less模块来解析 详解如下 首下我们去下载一个NodeJs,   我下载的是4.44版本,一路 ...

  2. PHP引用操作以及外部操作函数的局部静态变量的方法

    通过引用方式在外部操作函数或成员方法内部的静态变量 下面举个简单的例子,说明三个关于引用方面的问题: 1. 参数引用后函数内进行类型转换同样是地址操作 2. 参数引用后再传递给其他函数时需要再次添加引 ...

  3. 怎么在ng-repeat生成的元素上操作dom

    这个问题其实对初学者来说,都 有这样的经历,用ng-repeat生成的元素用js怎么也获取不到;这个其中原由是:angular拥有自动化渲染DOM的特性,它能帮助我们专注于操作数据,而页面的渲染则由a ...

  4. git和SVN的区别

    1)Git是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并, ...

  5. C#拾遗(一、基本类型)

    1. C#是一种块结构语言,用花括号{}分块,但是用#region和#endregion来定义可以展开和折叠的代码区域 #region 这是引用区 using System; ...... #endr ...

  6. hql中的in查询

    public List<ShopDianpu> findbymiaosha(long id, List<Object> list) throws Exception { Str ...

  7. 解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误

    修改Web.config,增加requestValidationMode="2.0"属性值 <system.web> <httpRuntime requestVa ...

  8. drupal7 开发自定义上传、下载模块的上传功能

    关键点有两个:1.在页面上显示出上传的控件,2.代码实现文件上传到服务器的功能 一.显示控件: 先来看关键点1: 实现页面显示出上传控件, 关键代码: $form['my_file_field'] = ...

  9. Python---day5-各类模块的使用

    #_*_coding:utf-8_*_ 时间模块import time # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time() ...

  10. python 在mongo 中建立索引

    import pymongo mongo = pymongo.Connection('localhost') collection = mongo['database']['user'] collec ...