javascript继承方法有哪些


本文摘自PHP中文网,作者醉折花枝作酒筹,侵删。

javascript继承方法有:1、使用call()方法,可以编写能够在不同对象上使用的方法;2、apply()方法,语法“apply(用作 this 的对象,要传递给函数的参数的数组)”。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

1、call() 方法

call() 方法是与经典的对象冒充方法最相似的方法。它的第一个参数用作 this 的对象。其他参数都直接传递给函数自身

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

function Huster(name,idNum,college)

    {        this.name = name;       

        this.idNum = idNum;       

        this.college = college;       

        this.course = new Array();   

         

        this.addCourse = function(course)//这个方法不能用prototype来定义,如果用的话,子类无法继承该方法

        {                   //用原型prototype定义的方法可以用原型链来继承,call()方法和apply()方法都无法继承            this.course.push(course);

            console.log(this.course);

        };   

             

    }   

     

    function Autoer(name,idNum)

    {       

    this.college = ‘自动化‘;

        Huster.call(this,name,idNum,this.college);//Autoer使用call()方法来继承 Huster

     if (typeof Autoer._initialized == "undefined")

     {

      Autoer.prototype.sayHobby = function() //自己的方法可以用原型链prototype定义

      {

        alert(this.college+‘人喜欢撸代码!‘);     

      };

      Autoer._initialized = true;

     }

  }

   

  var autoer1 = new Autoer(‘偶人儿‘,‘U123456789‘); //声明一个实例autoer1

  console.log(autoer1.name,autoer1.idNum,autoer1.college,autoer1.course);

  autoer1.addCourse(‘logistics‘);//调用Huster的方法

  autoer1.sayHobby();    //调用自身的方法

2、apply() 方法

apply() 方法与call()方法几乎一样,唯一的区别就是apply()方法只有两个参数,第一个用作 this 的对象,第二个是要传递给函数的参数的数组。也就是说apply()方法把call()方法的若干个参数放到一个数组里,传递给父类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

function Huster(name,idNum,college){   

this.name = name;           

this.idNum = idNum;   

this.college = college;   

this.course = new Array();           

this.addCourse = function(course)//这个方法不能用prototype来定义,如果用的话,子类无法继承该方法   

{                   //用原型prototype定义的方法可以用原型链来继承,call()方法和apply()方法都无法继承       

this.course.push(course);       

console.log(this.course);   

};               

}           

function Autoer(name,idNum)   

{       

this.college = ‘自动化‘;       

Huster.apply(this,new Array(name,idNum,this.college));//Autoer使用apply()方法来继承 Huster    

if (typeof Autoer._initialized == "undefined")     

{       

Autoer.prototype.sayHobby = function() //自己的方法可以用原型链prototype定义      

{         

alert(this.college+‘人喜欢撸代码!‘);           

};       

Autoer._initialized = true;      

}   

}      

var autoer1 = new Autoer(‘偶人儿‘,‘U123456789‘); //声明一个实例autoer1  

console.log(autoer1.name,autoer1.idNum,autoer1.college,autoer1.course);   

autoer1.addCourse(‘logistics‘);//调用Huster的方法  

autoer1.sayHobby();    //调用自身的方法

【推荐学习:javascript视频教程】

以上就是javascript继承方法有哪些的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

javascript如何实现将两个数组合并

js中4种数组遍历方法( for 、foreach() 、for/in、for/of)的区别

js如何修改html

深入浅析js中的事件委托

typescript和javascript有什么区别

javascript如何实现图片切换

深入浅析es10中的object.fromentries()

详细了解javascript中的构造器

reactdom.render的详细解析

javascript如何删除array数组元素

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...