JS对象继承的几种方式总结

今天学习了一下js的继承,js中的继承主要分四种,原型继承,构造函数继承,call/apply继承以及es6的extend继承。
1.原型继承:
原型继承主要利用js对象的prototype引用父类的构造函数来复制父类的方法。

//定义一个Person类
     function Person(name){
        this.name=name;
    }
    //打招呼
    Person.prototype.sayHello=function(){
        alert("Hello,my name is "+this.name);
    }  

    //定义Man类,继承Person类
    function Man(name,age){
        this.name=name;
        this.age=age;
    }
    Man.prototype=new Person();
    var man= new Man("隔壁老王",30);
    man.sayHello();

2.构造函数继承
子类中调用父类的构造函数,完成继承。

 //定义一个Person类
     function Person(name){
        this.name=name;
        this.sayHello=function(){
        alert("Hello,my name is "+this.name);
        }
    }  

    //定义Man类,继承Person类
    function Man(name,age){
        this.constructor=Person;
        this.constructor(name);
        this.age=age;
    }

    var man= new Man("隔壁老王",30);
    man.sayHello();

3.call/apply继承
利用call/apply方法调用父类构造函数实现继承

 //定义一个Person类
     function Person(name){
        this.name=name;
        this.sayHello=function(){
        alert("Hello,my name is "+this.name);
        }
    }  

    //定义Man类,继承Person类
    function Man(name,age){
        Person.call(this,name);
        this.age=age;
    }

    var man= new Man("隔壁老王",30);
    man.sayHello();

4.extends继承
使用ES6定义类的方法,类似java定义类的方式实现继承,注意部分浏览器不兼容 - -

‘use strict‘;
     //定义一个Person类
     class Person{
     //构造函数
        constructor(name){
            this.name=name;
        }
        sayHello(){
            alert("My name is"+this.name);
        }
    }  

    class Man extends Person{
        constructor(name,age){
            //调用父类构造函数
            super(name);
            this.age=age;
        }

    }

    var man= new Man("隔壁老王",30);
    man.sayHello();
时间: 2024-08-09 23:40:29

JS对象继承的几种方式总结的相关文章

js 实现继承的几种方式

//js中实现继承的几种方式 //实现继承首先要有一个父类,先创造一个动物的父类 function Animal(name){ this.name = name; this.shoot = function(){ console.log("yelp"); } } //动物的原型 Animal.prototype.eat = function(food){ console.log(name+"吃"+food); } //1.实例继承 var dog = new Ani

js实现继承的5种方式

js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现方式可以实现多继承)实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值 Js代码   function Parent(firstname) { this.fname=firstname; this.age=40; this.sayAge=func

js如何实现继承(js实现继承的五种方式)

js继承有5种实现方式: 1.继承第一种方式:对象冒充 function Parent(username){ this.username = username; this.hello = function(){ alert(this.username); } } function Child(username,password){ //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承 //第一步:this.method是作为一个临时的属性,并且指向Parent所指向的对

对象继承的几种方式

一. 对象冒充(又分为2种方式): 对象冒充方式的继承,只能继承父类函数内的属性,不能继承父类原型中的属性 方式一:   1. 让父类的构造函数成为子类的方法;                 2. 给子类的这个方法传入父类所拥有的属性,这就继承了父类的一些属性;                 3. 再在子类中删除这个方法;                                  function Child(name, age) {                     this

js实现继承的几种方式

1.call(),apply()方法实现继承 call方法的第一个参数的值赋值给类(即方法)中出现的this call方法的第二个参数开始依次赋值给类(即方法)所接受的参数 apply方法的第一个参数和call相同,第二个参数为数组类型,这个数组中的每个元素依次赋值给类(即方法)所接受的参数 function animal(username){ this.username = username; this.sayHello = function(){ alert(this.username);

JS实现继承的几种方式(转)

转自:幻天芒的博客 前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原

js原型继承的几种方式

1. 原型链继承 2,构造函数继承(对象冒充继承) 3,组合继承(原型链继承+构造函数继承) 4,原型式继承 5. 寄生组合式继承 一.原型链继承 function Show(){ this.name="run"; } function Run(){ this.age="20"; //Run继承了Show,通过原型,形成链条 } Run.prototype=new Show(); var show=new Run(); alert(show.name)//结果:ru

js中继承的几种用法总结(apply,call,prototype)

本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 <SPAN style="<SPAN style="FONT-SIZE: 18px"><html>   <body>  <script type="text/javascript"> 

JS对象继承篇

JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person(){ this.name = "Person"; } Person.prototype.getName = function(){ return this.name; }; function SuperPerson(name,sex){ this.name = name; this.sex