关于JS的继承


//继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 )


//属性的继承 : 调用父类的构造函数 call

//方法的继承 : for in :  拷贝继承 (jquery也是采用拷贝继承extend)


1拷贝继承

 function Person (name){
                this.name = name;
            }
            Person.prototype.showName  =function (){
                alert(this.name);
            }
            function Worker(name,job){
                Person.call(this,name);
                this.job = job;
            }

            extend(Worker.prototype, Person.prototype);
          //如果用Worker.prototype=Person.prototype的话,会造成引用相同的问题
            function extend(obj1,obj2){
                for(var i in obj2){
                    obj1[i] = obj2[i]
                }
            }

            var coder = new Worker('magicfly','frontEnd');
            coder.showName();

2 类继承

function Person (name){
                this.name = name;
            }
            Person.prototype.showName  =function (){
                alert(this.name);
            }
            function Worker(name,job){
                Person.call(this,name);
                this.job = job;
            }

            //Worker.prototype = new Person();
            // 这样继承会继承父级的不必要属性

            function F(){};
            F.prototype = Person.prototype;
            Worker.prototype = new F();
            //通过建立一个临时构造函数来解决 ,也称为代理函数


            var coder = new Worker('MAGICFLY','START');
            coder.showName();

3 原型继承


var a = {
    name : '小明'
};

var b = cloneObj(a);

b.name = '小强';

//alert( b.name );
alert( a.name );

function cloneObj(obj){
    
    var F = function(){};
    
    F.prototype = obj;
    
    return new F();
    
}

适用情况


拷贝继承:  通用型的  有new或无new的时候都可以

类式继承:  new构造函数

原型继承:  无new的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值