js的继承与克隆

原型上的继承

//圣杯模式的继承
var inherit = (function(){
  var F = function(){}
  return function(Target,Origin){
    F.prototype = Origin.prototype;
    Target.prototype = new F();
    Target.prototype.constructor = Target;
    Target.prototype.uber = Origin.prototype; //uber:继承与谁
  }
})()

深度克隆

function deepClone (origin,target) {
  var target = target || {};
  var toStr = Object.prototype.toString; //来判断是否是数组
  var arrStr = '[object Array]';
  for ( let prop in origin ){
    //判断是否是自身上的属性
    if( origin.hasOwnProperty(prop) ){
        if(origin[prop] !=='null' && typeof origin[prop] =='object'){
          target[prop] = toStr.call(origin[prop]) ===arrStr ? []:{};
          deepClone(origin[prop],target[prop])
        }else{
          target[prop] = origin[prop]
        }
      }
  }
  return target
}

posted @ 2020-05-08 14:38  心之所指,行之所至  阅读(166)  评论(0)    收藏  举报