在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;
}

最新文章

  1. JavaScript继承
  2. Java 第22章 mySQy
  3. .net程序员转行做手游开发经历(三)
  4. EF框架step by step(2)—Model-First
  5. DDD:《实现领域驱动》拾贝(待续)
  6. MSSQL删除字段时出现 服务器: 消息 5074,级别 16,状态 1,行 1 的解决办法
  7. Qemu文档
  8. Mac与Linux的一个巨大不同
  9. POJ 2559 Largest Rectangle in a Histogram (单调栈或者dp)
  10. [Ioi2005]River
  11. 浅谈我对几个Web前端开发框架的比较
  12. bash启动时加载配置文件过程
  13. 201521123071 《JAVA程序设计》第十周学习总结
  14. SQL强化(三) 自定义函数
  15. Oracle的order by的中文排序问题
  16. 安装VMware tools
  17. 不正常退出vim产生swp文件的解决方法
  18. std::set
  19. java如何编写下载功能
  20. hadoop的两大核心之一:HDFS总结

热门文章

  1. etcd 集群搭建
  2. 递归——CPS(二)
  3. Struts2的DMI跟SMI
  4. 页面加载与iframe加载函数
  5. 反射机制(reflection)动态相关机制
  6. php,cgi,nginx关系
  7. perl-Thread-Queue for openwrt
  8. 用sudo命令无法读取环境变量
  9. Samba: Server setup..
  10. html音视频标签