三目运算符与深层克隆(简化)

三目运算符:

     条件判断?是 :否 返回结果      

var num = 1 > 0? 2+2 : 1+1; 先判断1>0吗?1大于0,返回冒号前面的4

    

var num = 1  < 0? 2+2 : 1+1;    先判断1<0吗?1不小于0,返回冒号后面的2

    

这个三目运算符比if更高端,if只能判断,并不能返回结果,就相当于else if里面加return。

 

var num = 1 > 0 ? ("10" > 9 ? 1 : 0) : 2;

var num = 1 > 0 ? ("10" > "9" ? 1 : 0) : 2;     

先算括号里面的,字符串10小于字符串9,字符串比较规则是比较逐位的ASCII值!

返回0,1大于0,返回0.           

那现在简化一下深层克隆的代码:

        var obj = {
				name : "abc",
				age : 123,
				card : ["visa","master"],
				wife : {
						name : "bcd",
						son : {
						name : "aaa"
					}
				}
			}
			var obj1 = {
				
			}
			function deepClone(origin,target){
				var target = target || {},
					toStr = Object.prototype.toString,
					arrStr = "[object Array]";
				for(var pro in origin){
					if(origin.hasOwnProperty(pro)){
						if(origin[pro] != "null" && typeof(origin[pro]) == "object"){
							target[pro] = (toStr.call(origin[pro]) == arrStr)? [] : {};
							deepClone(origin[pro],target[pro]);
						}else{
							target[pro] = origin[pro];
						}
					}
				}
				return target;
			}		

是不是很简单了!   

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/83341143