您好,欢迎访问一九零五行业门户网

javascript对象之间存在的三种继承方式

这个对象,不是那个对象,第三哦!
对象之间会存在继承,所以,来说一下他们之间存在的三种三种继承方式:
1、冒用继承
 1 //创建了孙悟空构造函数   2             function sun(change,weapon,gf){   3                 this.change = change;   4                 this.weapon = weapon;   5                 this.gf = gf;   6                 this.bianshen = function(){   7                     alert(吃俺老孙一棒);   8                 }   9             }  10               11             //给原型上添加一个方法  12             /*sun.prototype.bianshen = function(){  13                 alert(吃俺老孙一棒);  14             }*/  15               16             //创建猪八戒构造函数  17             function zhubajie(name){//name是猪八戒自己单独有的属性  18                 this.name = name;  19                 //创建一个属性,属性值是sun构造函数  20                 this.sun = sun;  21                 this.sun(仙桃,金箍棒,紫霞仙子);  22                 delete this.sun;//删除掉这个属性  23             }  24               25             var zbj = new zhubajie(猪八戒);  26               27               28             zbj.bianshen();//方法可以使用  29             alert(zbj.weapon);  30               31               32             //zbj 和sun  不是同一类型的  33             alert(zbj instanceof sun); //false
这就是第一种继承方式。
【注意】冒用继承缺点:不能使用原型上的方法和属性     优点:可以传递参数;
2、原型继承
 1  function dan(car,money,home){   2                 this.car = car;   3                 this.money = money;   4                 this.home = home;   5             }   6                7             //发方法声明在原型对象上   8             dan.prototype.shoping = function (){   9                 alert(买买买);  10             }  11             dan.prototype.money = 5亿;  12               13             //这个实例化对象是dan的儿子,可以使用dan的属性和方法  14             var son = new dan(劳斯莱斯幻影,10亿,四合院);  15               16               17             //创建一个乞丐构造函数  18             function s(name){  19                 this.name = name;  20             }  21               22             //让乞丐继承富豪的属性和方法  23             //把乞丐的构造函数原型修改成干爹的原型,这样,乞丐实例化对象就可以使用干爹的属性和方法。(两种方法)  24 //            s.prototype = dan.prototype;  25             s.prototype = new dan();  26               27             //把s的原型对象constructor指针指回自己,否则会出问题  28             s.prototype.constructor = s;             29             var s = new s(苏乞儿);  30             s.shoping();  31             alert(s.money);  32               33             //判断s的爸爸是不是  dan  34             alert(s instanceof dan);//true  s 和  dan不是一个东西
这种继承方式就是将新建的父类对象赋给子类构造函数的原型。
   【注意】原型链继承缺点:不能传递参数      优点:可以使用原型 上的方法 ;
3、混合继承 
 1 function person(name,id,sex){   2                 this.name = name;   3                 this.id = id;   4                 this.sex = sex;   5                 this.think = function(ss){   6                     alert(ss);   7                 }   8             }   9               10             person.prototype.eat = function(){  11                 alert(呵呵);  12             }  13               14               15               16             function xm(name,id,sex,clas){  17                 this.clas = clas;  18                 //call方法是用来继承用的。你想继承那个对性的属性,就要把属性传递进来;  19 //                person.call(this,name,id,sex);  20                   21                 //apply和call功能相同;  22                 //区别  call方法  参数要一个一个传,  apply方法可以传参数数组  23                 //优先选择apply方法使用  24                 person.apply(this,arguments);  25             }  26               27             //原型链继承  +  call/apply   叫混合继承  28             xm.prototype = new person();  29             xm.prototype.constructor = xm;  30               31               32             var xiaoming = new xm(小明,12312112112332,男,一年级二班);  33             alert(xiaoming.name);//打印小明名字属性  34             xiaoming.think(坎坎坷坷);  35               36             //现在有一个需要,让小明可以使用person对象原型上的方法  37             xiaoming.eat();
第三种方式就是 冒用继承 + 原型继承  ,既能继承父类的原型,完成复用,又能向父类传递参数。
javascript所有的内容就到这里了,希望可以帮到大家!!!!!!
以上就是javascript对象之间存在的三种继承方式的详细内容。
其它类似信息

推荐信息