Javascript中JSON对象继承实现

来源:互联网 发布:java文件流转文件 编辑:程序博客网 时间:2024/05/21 22:40

1. 关于JSON对象浅拷贝的实现

    1.1 函数的实现

/** *Json对象的浅拷贝 *      返回具有父类属性的新的child对象 * @param {Object} parent * @param {Object} child */function extend(parent, child) {var child = child || {};for(var prop in parent) {child[prop] = parent[prop];}return child;}

     1.2 浅拷贝的实现分析

           1. 初始化变量

            var person = {age: 18,friends: ["xiaoming", "zhangsan"],address: {home: "home address",office: "office address"}};var programer = {language: "javascript"};

           2. 进行JSON对象的浅拷贝

            extend(person,programer);
            3. 观察父类数据修改后,子类数据的变化

                  3.1 programer 已经具有了person的属性内容

                      

                  3.2设置 person.address.home = "home ",发现子类的内容也被改变

                       

2、关于JSON对象深拷贝的实现

    2.1 函数的实现

/** * Json对象的深拷贝 *       返回具有父类属性的新的child对象 * @param {Object} parent * @param {Object} child */function extendDeeply(parent, child) {var child = child || {};for(var prop in parent) {//如果属性本身,就是一个数组或者Json对象,进行深拷贝if(typeof parent[prop] === "object") {//确定子对象的属性类型,[]或者{}对象child[prop] = (parent[prop].constructor === Array) ? [] : {};//实现深拷贝extendDeeply(parent[prop], child[prop]);} else {child[prop] = parent[prop];}}return child;}

      2.2 深拷贝的实现分析

   1. 初始化变量

var person = {age: 18,friends: ["xiaoming", "zhangsan"],address: {home: "home address",office: "office address"}};var programer = {language: "javascript"};//浅拷贝的测试            extend(person,programer);//深拷贝的测试

   2. 进行JSON对象的浅拷贝    

extendDeeply(person, programer);

 3. 观察父类数据修改后,子类数据的变化

      3.1 programer 已经具有了person的属性内容

          

      3.2设置 person.address.home = "home ",发现子类的内容不会被改变

             



1 0
原创粉丝点击