JS:继承

继承

   原型链实现了继承,但无法传参和共享

          function Box(){          //Box()构造函数
                     this.name = "lee";
                 }

                 function Desk(){        //Desk()构造函数
                     this.age = 100;
                 }

                 Desk.prototype = new Box();  //通过原型Desk()继承了Box()
                 Desk.prototype.age = 200;//对应第255行
                 

                 var desk = new Desk();
                 alert(desk.age);
                 alert(desk.name); //undefind, 对应第220行

                 function Table(){
                     this.level = "cccc";
                 }

                 Table.prototype = new Desk();


                 var table = new Table();
                 alert(table.name);

 

原型链+构造函数的模式,称为组合继承,解决了传参和共享的问题,常用此方法。

 

          function Box(age){
                     this.name = ["ll","cc","kk"];
                     this.age = age;
                 }

                 Box.prototype.run = function(){
                     return this.name + this.age;
                 }

                 function Desk(age){
                     Box.call(this,age);//this表示Desk. 对象冒充,给父类传参,解决了传参问题
                 }

                 Desk.prototype = new Box(); //原型链继承,解决了共享问题

                 var desk = new Box(120);
                 //alert(desk.age);//20
                 //alert(desk.name); //llcckk
                 desk.name.push("00");
                 //alert(desk.name); //llcckk00
                 alert(desk.run());

 

 

对象冒充 解决了传参问题

  为了结局引用共享和超类型无法传参的问题,我们采用一种叫借用构造函数的技术,或者成为对象冒充(伪造对象,经典继承)的技术来解决这两种问题。

  

posted @ 2015-12-03 18:14  素雨雫晴  阅读(177)  评论(0编辑  收藏  举报