# prototypeChain **Repository Path**: chengll000/prototypeChain ## Basic Information - **Project Name**: prototypeChain - **Description**: 简单总结JS继承的几种方式 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-25 - **Last Updated**: 2021-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## JS继承的几种方式 ### 1. 原型链继承 优点:所有实例共享原型链上的属性和方法。 缺点: (1)无法向父类传参。 (2)若某个实例的引用类型被修改,则其他实例对象的属性都会被修改。 ### 2. 构造函数继承 优点: (1)可以给父类传参。 (2)避免了共享属性,修改某个实例的属性不会影响其他实例。 缺点: (1)实例对象只是子类的实例,不是父类的实例,所以父类原型上的方法和属性都不能用。 (2)方法都定义在构造函数中,导致每次实例化一个对象时所有方法都会重新创建,大量使用浪费内存。 ### 3. 组合继承 >组合了构造函数继承和原型继承的模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。这样每个实例都会有自己的一份实例属性副本,但同时又共享着对方法的引用,最大限度节省了内存,并且支持向构造函数传递参数 优点: (1)每个实例的属性互不影响,共享属性和方法也只会创建一次。最大限度节省了内存。 (2)支持像父类传参数。