【浅谈JavaScript的原型与继承】

这是我参与更文挑战的第17天,活动详情查看: 更文挑战

原型

为什么使用原型

利用原型可以提高代码的复用性。

直接看以下代码来理解:

<script>
        function Person(name,age,gender){
            this.name = name;
            this.age = age;
            this.gender = gender;
            this.sayName = function () {

            }
        }
        var person1 = new Person();
        var person2 = new Person();
        console.log(person1.sayName == person2.sayName);
    </script>
复制代码

image.png
可以看到结果是false,这就是这种方法的缺点,对于每一个基于Person创建的对象都会重复地保存这些相同的方法,但他们本质上不是同一个方法,这就带来了浪费。利用原型对象就可以保存一些公共的属性和方法,解决这个问题。

原型对象的使用方法

那么怎么使用原型对象呢?

通过使用prototype属性指向该对象,这个对象称之为原型对象。
利用原型对象为对象添加新的方法和属性。

<script>
        function Person(name){
            this.name = name;
        }
        var person = new Person("Tom");
        Person.prototype.sayName = function () {
            console.log(this.name);
        };
        var person2 = new Person("Jack");
        console.log(person.sayName == person2.sayName);
        person.sayName();
        person2.sayName();
    </script>
复制代码

image.png
可以看到,本来构造函数Person()中,不存在sayName方法,使用prototype可以为构造函数添加属性和方法。

继承

利用原型对象来继承。如果一个对象中本来没有某个属性或方法,但是可以从另一个对象中获得,这样就实现了继承。

<script>
        function Person(name){
            this.name = name;
        }
        Person.prototype.sayName = function () {
            console.log(this.name);
        };
        var person1 = new Person("Tom");
        var person2 = new Person("Jack");
        person1.sayName();
        person2.sayName();
    </script>
复制代码

image.png
本来对象person1和person2中是没有sayName方法的,但是可以通过对Person的原型添加方法,这样两个对象也就拥有了该方法。上述代码可以理解为,对象继承了原型对象中的成员。

JS中的继承不止有这一种方式,下期我们细讲JS中的其他继承方式。

以上就是我对JS原型的一些理解,如有错误或不足之处欢迎评论指正。
(写作不易,欢迎点赞。)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享