JavaScript的继承实现

JavaScript的继承实现

1、何为继承

​ 继承简单来说就是子承父业,所谓的子,就是子类,可以通过继承来得到父类的属性和方法,并且可以拥有属于自己的方法和属性。所谓的父,就是父类,也被称为基类,是其子类的根本,也就是说,父类一般就是他所有子类的共同点。

2、继承有何用

​ 学过面向对象的,应该比较了解继承,毕竟这是面向对象思想中的一块基石,通过继承可以减少我们很多冗余的代码, 这样便可以减少我们对内存空间的占用,来达到高效的执行效率。

3、JavaScript如何实现

​ 我们都只到在java中我们可以通过关键字extends来完成继承的操作,也就是如下的操作:

package com.sanphantom;

public class father {
}

public class child extends father {

}

​ 并且继承主要是类与类之间的关系,而在JavaScript中没有类的概念,但是我们JavaScript有对象,所以我们我们可以把继承的概念转换到对象上面来,这便是JS的继承了。

​ 这接下来,话不多说,直接举例:

function Person(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}
Person.prototype.eat = function () {
    console.log("我需要吃饭");
};
function Student() {}
//通过原型对象的指向来完成继承
Student.prototype = new Person("小明", 18, "男");
let stu = new Student();
console.log(stu.name);
stu.eat();

​ 在上面代码中,明显的看到了一个注解,那个注解下面的语句便是一种继承的方式,通过原型对象的指针来完成继承。但是这样有一个弊端,便是这种继承之后,他的属性就固定不变了。如果想要继承属性,则需要使用call( )方法。

call()方法:该方法有两种值来作为传递,一个是this 指针,一个便是属性名。此方法用作子对象的构造函数中,通过父对象来进行调佣。例如Person.call(this, name, age, sex);

当两者结合之后,便可以完全的继承父对象的属性和方法了。

function Animal(name, weight) {
    this.name = name;
    this.weight = weight;
}
Animal.prototype.eat = function () {
    console.log("我必须要吃点东西了");
};

function Dog(name, weight) {
    Animal.call(this, name, weight)
    //call方法就是把dog里面的属性指向指到Animal构造函数里
}
Dog.prototype = new Animal();
Dog.prototype.say = function () {
    console.log("在不给我吃的,我就汪汪叫");
};

let dog1 = new Dog("萨摩耶", "40kg");
let dog2 = new Dog("泰迪", "20kg");

console.log(dog1.name);
console.log(dog2.weight);
dog1.eat();

其中输出结果为:

萨摩耶
20kg
我必须要吃点东西了

猜你喜欢

转载自blog.csdn.net/qq_36752728/article/details/81709552