1. 程式人生 > >三目運算子與深層克隆(簡化)

三目運算子與深層克隆(簡化)

三目運算子:

     條件判斷?是 :否 返回結果      

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

是不是很簡單了!