JS类对象中的继承,关键字super

类继承中的super


    <script>
        // super 关键字调用父类普通函数
        //注意点:
        // 继承中的属性或者方法查找原则: 就近原则
        // 1. 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的
        // 2. 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)


		//Father父类
        class Father{
       		 //constructor存放属性时,必不可少
            constructor(name,age){
                this.name=name;
                this.age=age;

            }
            //return将返回结果给say()
            say(){
                return "fathers"
            }
        }
		// A extends B,---extends表示继承父级的相关内容,A继承B,Son继承Father
		//Son子类
        class Son extends Father{
            constructor(name,age,sex){
                super(name,age)
                this.sex=sex;       
            }
            ha(){
            //super.say()就是调用父级中的普通方法,即函数say()
                console.log("I am"+super.say()+"baby");
            }
        }
		//通过new实例化对象,几个new,几个实例对象,且都是不同
        var p=new Son('张三',18,'男');

        console.log(p);//name=张三,age=18,sex=男
        console.log(p.name);//张三
        p.ha()//I am fathers baby
    </script>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 原型 在 JavaScript ,每个对象都有一个原型对象,原型对象是一个普通的对象,其包含了一些属性和方法。当我们访问对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript 引擎会自动去该对象的原型对象查找,如果原型对象仍然没有,则会在原型对象的原型对象查找,一直查找到 Object.prototype,最后如果还没有找到,则会返回 undefined 。 2. 继承JavaScript ,我们可以通过继承来实现代码复用和对象之间的关系。JavaScript 继承有两种方式:通过原型链继承和通过构造函数继承。 3. 原型继承 原型继承是指在 JavaScript 通过设置对象的原型来实现继承的方式。具体的实现方式有很多种,其一种比较常见的方式是使用 Object.create() 方法来创建一个新对象,并将原型指定为另一个对象。示例如下: ``` let animal = { eat() { console.log("eating"); } }; let rabbit = Object.create(animal); rabbit.eat(); // 输出 "eating" ``` 在上面的示例,我们首先定义了一个 animal 对象,它包含一个 eat() 方法。然后我们通过 Object.create() 方法创建了一个新对象 rabbit,并将其原型设置为 animal,这样就实现了 rabbit 对象从 animal 对象继承 eat() 方法的功能。我们可以通过调用 rabbit.eat() 来验证该方法确实存在于 rabbit 对象。 4. 关键字JavaScript ,有一些关键字和函数可以用来实现原型继承。其最常用的关键字是 extends 和 super。 extends 关键字可以用来继承一个类,示例如下: ``` class Animal { eat() { console.log("eating"); } } class Rabbit extends Animal { run() { console.log("running"); } } let rabbit = new Rabbit(); rabbit.eat(); // 输出 "eating" rabbit.run(); // 输出 "running" ``` 在这个示例,我们首先定义了一个 Animal 类,并为其定义了一个 eat() 方法。然后我们定义了一个 Rabbit 类,该类使用 extends 关键字继承了 Animal 类,并为其定义了一个 run() 方法。我们通过实例化 Rabbit 类来创建一个 rabbit 对象,并通过调用 rabbit.eat() 和 rabbit.run() 来验证其继承效果。 super 函数用于在子类调用父类的同名方法。示例如下: ``` class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + " makes a noise."); } } class Dog extends Animal { constructor(name) { super(name); } speak() { console.log(this.name + " barks."); } } let dog = new Dog("Rex"); dog.speak(); // 输出 "Rex barks." ``` 在这个示例,我们首先定义了一个 Animal 类,并为其定义了一个构造函数和一个 speak() 方法。然后我们定义了一个 Dog 类,该类继承了 Animal 类,并为其定义了一个构造函数和一个 speak() 方法。 在 Dog 类的构造函数,我们调用了父类的构造函数,并传入了 name 参数。在 Dog 类的 speak() 方法,我们使用 super 函数调用了父类的同名方法,并将其重写为输出“barks.”。我们通过实例化 Dog 类来创建一个 dog 对象,并通过调用 dog.speak() 来验证其继承效果。 总结 在 JavaScript ,原型继承是一种非常重要的对象复用和代码组织方式。我们可以使用原型对象来实现原型继承,也可以使用关键字和函数来简化继承的过程。在实际开发,我们需要根据具体的业务场景和需求来选择最合适的继承方式和实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值