首页 > 试题广场 >

javascript里面的继承怎么实现,如何避免原型链上面的

[问答题]
javascript里面的继承怎么实现,如何避免原型链上面的对象共享
function Cat(name){
  Animal.call(this);
  this.name = name || 'Tom';
}
(function(){
  // 创建一个没有实例方法的类
  var Super = function(){};
  Super.prototype = Animal.prototype;
  //将实例作为子类的原型
  Cat.prototype = new Super();
})();
发表于 2017-03-21 17:34:38 回复(1)
function inheritObject(o) {
    function F() {}
    F.prototype=o;
    return new F();
}

function inheritPrototype(sub, Super) {
    var p=inheritObject(Super.prototype);
    p.constructor=sub;
    sub.prototype=p;
}

function Super(name) {
}

function Sub(name, time) {
    Super.call(this, name);
}

inheritPrototype(Sub, Super);
发表于 2018-04-16 11:21:22 回复(0)
用构造函数和原型链的混合模式去实现继承,避免对象共享可以参考经典的extend()函数,很多前端框架都有封装的,就是用一个空函数当做中间变量
发表于 2015-07-27 15:05:34 回复(0)
用构造函数和原型链的混合模式去实现继承,避免对象共享可以参考经典的extend()函数,很多前端框架都有封装的,就是用一个空函数当做中间变量
发表于 2019-05-03 13:56:05 回复(1)

圣杯模式


发表于 2019-04-16 15:14:30 回复(0)
function parent(){
}
function son(){
}
son.prototype = new parent();
发表于 2017-12-07 00:00:50 回复(0)
利用原型来继承,通过增加一个空的函数来避免原型链上的对象共享
        var a = {name:“小明”};
        var b = cloneObj(a);
         function cloneObj(obj){
                var f = function(){};
                f.prototype = obj;
                return new f();
        }
发表于 2016-08-18 19:49:25 回复(0)