您的位置:首页 > 新闻 > 资讯 > alexa排名全球前50网站_软件商店oppo官方下载_seo推广公司_手机制作网页

alexa排名全球前50网站_软件商店oppo官方下载_seo推广公司_手机制作网页

2025/4/18 19:56:46 来源:https://blog.csdn.net/xiaoxiaoovo/article/details/147172021  浏览:    关键词:alexa排名全球前50网站_软件商店oppo官方下载_seo推广公司_手机制作网页
alexa排名全球前50网站_软件商店oppo官方下载_seo推广公司_手机制作网页

1、什么是继承?

继承是面向对象软件技术中的一个概念。

2、js中有哪儿些继承?

js中的继承有ES6的类class的继承、原型链继承、构造函数继承、组合继承、寄生组合继承。

2.1 ES6中类的继承

class Parent {constructor() {this.age = 18;}
}class Child extends Parent {constructor() {super();this.name = "张三"}
}
let o1 = new Child();
console.log(o1,'o1');

优先使用ES6的class继承方式。

2.2 原型链继承

function Person(name) {this.name = "lx"
}function Student(age) {this.age = 22;
}Student.prototype = new Person();
let stu = new Student();
console.log(stu,'stu');

缺点:如果父类的原型对象上有一个属性 是引用类型的值,那么所有的实例都会共享这个引用类型,如果一个实例改变了该属性,其他实例的该属性都会被改变。

2.3 构造函数继承

function Person(name) {this.name = "lx"
}function Student(age) {Person.call(this);this.age = 22;
}let stu = new Student();
console.log(stu,'stu');

优点:原型属性不会被共享

缺点:不能继承父类prototype上的属性

2.4 组合继承(原型链继承+构造函数继承)

function Person(name) {this.name = "lx"
}function Student(age) {Person.call(this);this.age = 22;
}Student.prototype = new Person();
let stu = new Student();
console.log(stu,'stu');

优点:1. 原型属性不会被共享  2.可以继承父类的prototype的属性和方法 

缺点:1. 它调用了2次Parent()  2. 它在Child的prototype上添加了父类的属性和方法。

2.5 寄生组合继承(原型链继承+构造函数继承+组合继承)

function Person(name) {this.name = "lx"
}function Student(age) {Person.call(this);this.age = 22;
}Student.prototype = Object.create(Person.prototype);
let stu = new Student();
console.log(stu,'stu');

优点:1. 原型属性不会被共享 2. 可以继承父类的prototype的属性和方法 3. 调用1次Parent(),它不会再Child的prototype上添加父类的属性和方法。

缺点:Child的prototype上的原始属性和方法会丢失。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com