当前位置: 首页 > news >正文

哪个网站专注做微信模板搜索引擎优化的五个方面

哪个网站专注做微信模板,搜索引擎优化的五个方面,西宁网络公司网站建设,哪个网站做招聘海报比较好Question JavaScript实现继承的方式? 包含原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承和ES6 类继承 JavaScript实现继承的方式 在JavaScript中,实现继承的方式多种多样,每种方式都有其优势和适用场景。以下…

Question JavaScript实现继承的方式?

包含原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承和ES6 类继承

JavaScript实现继承的方式

在JavaScript中,实现继承的方式多种多样,每种方式都有其优势和适用场景。以下是一些常见的继承方式:

1. 原型链继承

原型链继承是通过将子类的原型设置为父类的实例来实现继承。这样,子类就可以访问父类原型上的属性和方法。

function Parent({
  this.name = 'Parent';
}

function Child({}

Child.prototype = new Parent();

const childInstance = new Child();
console.log(childInstance.name); // 输出 'Parent'

优势: 简单易懂。

缺点: 引用类型的属性会被所有实例共享,无法传递参数给父类构造函数。

2. 构造函数继承

构造函数继承通过在子类构造函数中调用父类构造函数来实现继承。

function Parent(name{
  this.name = name || 'Parent';
}

function Child(name{
  Parent.call(this, name);
}

const childInstance = new Child('Child');
console.log(childInstance.name); // 输出 'Child'

优势: 解决了原型链继承中引用类型属性共享的问题。

缺点: 方法都在构造函数中定义,无法实现函数复用。

3. 组合继承

组合继承结合了原型链继承和构造函数继承,通过调用父类构造函数设置实例属性,再通过将父类实例作为子类原型来实现。

function Parent(name{
  this.name = name || 'Parent';
}

function Child(name{
  Parent.call(this, name);
}

Child.prototype = new Parent();

const childInstance = new Child('Child');
console.log(childInstance.name); // 输出 'Child'

优势: 同时继承实例属性和方法。

缺点: 调用了两次父类构造函数,存在一定的性能问题。

4. 原型式继承

原型式继承通过创建一个空对象,然后将该对象作为参数传递给一个函数,该函数的原型被赋值为这个对象,从而实现继承。

function createObject(obj{
  function F({}
  F.prototype = obj;
  return new F();
}

const parent = {
  name'Parent'
};

const child = createObject(parent);
console.log(child.name); // 输出 'Parent'

优势: 简单灵活。

缺点: 属性共享问题,引用类型属性会被所有实例共享。

5. 寄生式继承

寄生式继承在原型式继承的基础上,增加了对父类构造函数的调用,从而可以传递参数给父类构造函数。

function createObject(obj{
  const clone = Object.create(obj);
  clone.sayHello = function({
    console.log('Hello!');
  };
  return clone;
}

const parent = {
  name'Parent'
};

const child = createObject(parent);
console.log(child.name); // 输出 'Parent'
child.sayHello(); // 输出 'Hello!'

优势: 可以在对象上添加新的方法。

缺点: 仍然存在属性共享问题。

6. 寄生组合式继承

寄生组合式继承是为了解决组合继承中调用两次父类构造函数的性能问题,通过使用 Object.create 创建父类原型的副本,然后将该副本赋值给子类原型。

function inheritPrototype(child, parent{
  const prototype = Object.create(parent.prototype);
  prototype.constructor = child;
  child.prototype = prototype;
}

function Parent(name{
  this.name = name || 'Parent';
}

function Child(name{
  Parent.call(this, name);
}

inheritPrototype(Child, Parent);

const childInstance = new Child('Child');
console.log(childInstance.name); // 输出 'Child'

优势: 解决了组合继承的性能问题,同时保持了原型链继承的优点。

缺点: 略显繁琐。

7. ES6 类继承

ES6 引入了 class 关键字,使得面向对象编程更加直观。通过 extends 关键字可以实现类的继承。

class Parent {
  constructor(name) {
    this.name = name || 'Parent';
  }
}

class Child extends Parent {
  constructor(name) {
    super(name);
  }
}

const childInstance = new Child('Child');
console.log(childInstance.name); // 输出 'Child'

优势: 语法更加简洁,易读易写。

缺点: 底层仍然是基于原型链的继承。

100+小程序源码关注公众号回复 5 获取(不想看激励视频的可私信)

alt

本文由 mdnice 多平台发布

http://www.khdw.cn/news/22104.html

相关文章:

  • 网站收缩目录模板郑州seo顾问阿亮
  • 成都网站制作怎么样百度网盘官网登录入口
  • 网站添加cms上海优化排名网站
  • 网站规划建设交换神器
  • 济源做网站的公司网络游戏推广员是做什么的
  • 建一个网站做cpa联盟网站首页排名
  • 网站建设计划书模板比较好的网络优化公司
  • 建筑工程网上培训平台佛山seo
  • 学校让做网站做完怎么交网站推广seo
  • 北京seo优化网站建设关键词优化一般收费价格
  • 微信引流神器手机电影网站怎么做优化推广方案
  • 智慧团建网站进不去网站在线制作
  • cms网站后台管理系统有创意的营销案例
  • 使用代理服务器后看什么网站百度网盘app下载安装
  • 学校网站建设新闻帮平台做推广怎么赚钱
  • 土特产网站建设事业计划书网站权重是怎么提升的
  • 金山区做网站吗网络媒体发稿
  • 电商网站 流程图厦门seo优化多少钱
  • 建设机械网站平台二十条疫情优化措施
  • wordpress 首页 摘要 插件移动建站优化
  • 橙子建站仅推广服务公司
  • 汕头市道路建设网站关键词优化是怎么做的
  • 淘宝网站怎么做视频教程免费sem工具
  • 在线代理访问网站的网址搜外网
  • 手机网站自适应分辨率成都推广团队
  • 发布信息的网站今天高清视频免费播放
  • 健身网站开发项目总结想做网络推广的公司
  • 自己做彩票网站犯法吗怎么seo快速排名
  • 网站备案账号是什么李飞seo
  • 源代码网站培训互联网舆情监测系统