js 原型继承的问题

        function object(o)
        { 
            function F() {} 
            F.prototype = o; 
            return new F(); 
        } 
        function inheritPrototype(subType,superType)
        {
            let prototype=object(superType.prototype);
            prototype.constructor=subType;
            subType.prototype=prototype;
        }

        function SuperType(name)
        {
            this.name=name;
            this.colors=["red","blue","green"];
        }
        SuperType.prototype.sayName=function()
        {
            console.log(this.name);
        }
        function SubType(name,age)
        {
            SuperType.call(this.name);
            this.age=age;
        }
        inheritPrototype(SubType,SuperType);
        subType.prototype.sayAge=function()
        {
            console.log(this.age);
        }
        function object(o)
        { 
            function F() {} 
            F.prototype = o; 
            return new F(); 
        } 
        function inheritPrototype(subType,superType)
        {
            let prototype=object(superType.prototype);
            prototype.constructor=subType;
            subType.prototype=prototype;
        }

let prototype=object(subType.prototype);
有意义吗,多包装一层,
直接let prototype=superType.prototype;
我感觉也行吧,
这里多包装一层什么意义,除了改变constructor指向

阅读 1.3k
1 个回答

有意义,就是改变constructor指向,直接let prototype=superType.prototype;,修改prototypeprototype.constructor=subType会改变superType.prototype,造成污染,加了一层,就不会造成污染了

继承有很多种方式,优缺点都很明显,但不是说哪个最好,要看具体代码环境,再选择使用哪种

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题