js实现继承常用的几种方式

本文深入探讨了JavaScript中实现继承的多种方法,包括原型链、call、apply及ES6的class语法。通过具体示例,展示了如何使用这些技术创建继承自基类的子类,并保留或扩展基类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js实现继承的方式,有原型链,call,apply,es6的class,个人感觉这几个用的最多,随着es6以及后续版本的不断发展,这种偏向后台的语法糖写法博主最为喜欢,博主也是做java出身的哈。

<!DOCTYPE html>
<html>
<head>
    <meta chart="utf-8" />
    <title>js实现继承常用的几种方式</title>
</head>
<body>
    <script>
        // 定一个Animal的基类,子类会继承say()方法输出自己的信息
        function Animal(name) {
            this.name = name || "Animal";
            this.say = function() {
                console.log("i'm ", this.name, " 来自对象:", this)
            }
        }

        // 原型链实现继承
        function Cat1() {}
        Cat1.prototype = new Animal();
        Cat1.prototype.name = "Cat1";
        // 运行
        var cat1 = new Cat1();
        cat1.say();

        // 使用call来实现继承
        function Cat2(name) {
            Animal.call(this, name);
        }
        // 运行
        var cat2 = new Cat2("Cat2");
        cat2.say();

        // 使用apply来实现继承
        function Cat3(name) {
            Animal.apply(this, [name]);
        }
        // 运行
        var cat3 = new Cat3("Cat3");
        cat3.say();

        // 使用es6的语法class来实现继承,需要包含构造函数
        class Cat4 extends Animal {
            constructor(props) {
                super(props);
            }
        }
        // 运行
        var cat4 = new Cat4("Cat4");
        cat4.say();

    </script>
</body>
</html>

 

下面是运行效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值