JS克隆/三目运算符

本文深入探讨了JavaScript中的对象克隆,包括浅层克隆和深层克隆的实现方式,并通过示例代码详细解释了如何进行深层克隆以确保对象副本的独立性。此外,还介绍了三目运算符的基本用法及其在条件判断中的应用。
摘要由CSDN通过智能技术生成

克隆

浅层克隆

var person = {
    name : 'Mike',
    age : 19,
    subject : ['chinese','math','english'],
    score : {
        Chinese : 90,
        Math : 80,
        English : 77
    }
};
var person1 = {};

function clone(origin,target) {
    for (var prop in origin)
    {
        target[prop] = origin[prop]
    }
}
clone(person,person1)
  • 此时person1 = person,但是当其中一个改变时,另一个也随之改变,只是浅层克隆

深层克隆

1. 遍历数组 for(var prop in origin)
2. 判断对象是否是原始值:用typeof()判断
3. 判断是数组还是对象    
    - toString
    - instanceof
    - constructor
4. 建立相应的数组或对象
5. 递归
  • 将person克隆给person1,并且当其中一个改变时,另一个不受影响
var person = {
    name : 'Mike',
    age : 19,
    subject : ['chinese','math','english'],
    score : {
        Chinese : 90,
        Math : 80,
        English : 77
    }
};
var person1;
function deepClone(origin,target) {
    var target = target || {};
    toStr = Object.prototype.toString;
    arrStr = '[object Array]';
    for (var prop in origin) 
    {
        if(origin.hasOwnProperty(prop))
        {
            // 非原始值
            if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object')
            {
                // 判断是否为数组
                if(toStr.call(origin[prop]) == arrStr)
                {
                    target[prop] = [];
                }
                else    //对象
                {
                    target[prop] = {};
                }
                // 递归
                deepClone(origin[prop],target[prop]);
            }
            else
            {
                target[prop] = origin[prop];
            }
        }
    }
    return target;
}
person1 = deepClone(person,person1);

三目运算符

表达式1?表达式2:表达式3

1. 判断表达式1是否为真
2. 若为真,则取表达式2的值
3. 若为假,则取表达式3的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值