angular.js 的angular.copy angular.extend angular.merge

Posted 宝清老窖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angular.js 的angular.copy angular.extend angular.merge相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script src="js/angular.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            //angular.copy is deep copy
            var o1 = {
                name: xudongyang,
                age: 26,
                skill:{}
            }
            var o2 = angular.copy(o1);
            console.log(o2);
            console.log(o1 == o2);
            
            //extend is shallow copy of the properties of the source objects from right to left 
            var src1 = {
                name: xudongyang,
                age: 20
            }
            var src2 = {
                age: 10,
                skill: {}
            }
            var dst = {}, 
                dst2 = angular.extend(dst , src2 , src1)
            console.log(dst2.skill == dst.skill);
            src2.skill.eat = "kaorou";
            console.log(dst2.skill);
            console.log(dst.skill);
            
            //angular.merge is deep copy
            var m1 = {name:xudongyang , age:29},
                m2 = {age:10 , skill:{}}
                dstm = {};
                dstm2 = angular.merge(dstm , m2 , m1);
            console.log(dstm2);
            console.log(m2.skill == dstm2.skill);
            
            //angular.extend vs angular.merge
            var s1 = {skill:{name:java , experience: 20, certified: true}},
                s2 = {skill:{name:js , experience: 10}},
                dst = {},
                dst2 = angular.extend(dst , s1 , s2);
                console.log(dst);
                
            //angular.extend vs angular.merge
            var s1 = {skill:{name:java , experience: 20, certified: true}},
                s2 = {skill:{name:js , experience: 10}},
                dst = {},
                dst2 = angular.merge(dst , s1 , s2);
                console.log(dst);
            //浅克隆只克隆一层,深克隆一直复制到最底层
        </script>
    </body>
</html>

 

以上是关于angular.js 的angular.copy angular.extend angular.merge的主要内容,如果未能解决你的问题,请参考以下文章

Angular.js对复制的文件对象的非法调用

Angular 中 angular.copy 的替代方法是啥

大型数组的 angular.copy 面临非常糟糕的性能

为啥以及何时使用 angular.copy? (深拷贝)

angular.copy() 和 JSON.parse(JSON.stringify()) 之间的区别?

AngularJS方法 —— angular.copy