【前端每日一题】 day3

JS的原型链如何实现继承,请写出一个例子

JavaScript中的原型链继承是通过原型(prototype)来实现的。每个对象都有一个原型(prototype),该原型又是一个对象,而这个对象又有自己的原型,以此类推,形成了一个原型链。当试图访问一个对象的属性或方法时,JavaScript会首先在该对象本身上查找,如果找不到,就会沿着原型链向上查找,直到找到相应的属性或方法,或者到达原型链的末端。

such as

javascript 复制代码
// 父类(超类)
function Animal(name) {
  this.name = name;
}

// 父类的方法
Animal.prototype.sayName = function() {
  console.log("My name is " + this.name);
};

// 子类(派生类)
function Dog(name, breed) {
  // 调用父类的构造函数
  Animal.call(this, name);
  this.breed = breed;
}

// 继承父类的原型
Dog.prototype = Object.create(Animal.prototype);

// 重设子类的构造函数,否则会指向父类
Dog.prototype.constructor = Dog;

// 子类的方法
Dog.prototype.bark = function() {
  console.log("Woof!");
};

// 创建一个实例
var myDog = new Dog("Max", "Labrador");

// 调用父类的方法
myDog.sayName(); // 输出:"My name is Max"

// 调用子类的方法
myDog.bark(); // 输出:"Woof!"

Animal 是一个父类,拥有一个属性 name 和一个方法 sayName。

Dog 是一个子类,通过调用父类的构造函数 Animal.call(this, name) 继承了父类的属性,并通过 Object.create(Animal.prototype) 继承了父类的方法。

在子类中,还可以定义自己的方法,比如 bark。

最后,通过创建 Dog 类的实例 myDog,我们可以看到实现了继承关系,并且可以调用父类和子类的方法。

相关推荐
啾咪orJIUMI1 小时前
Vue 3 + 高德地图封装实战:点位、区域、Loca 流光与 Vue 信息窗体
前端·vue.js
掘金者阿豪2 小时前
AI数据库不只是向量检索:从数据语义到库内智能计算的技术演进
前端
梦里寻码2 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
FRing032 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
SameX2 小时前
HarmonyOS ArkUI Dialog 复用 用 @CustomDialog + enum type 做多类型统一管理的做法
前端
AiMan2 小时前
豆包爱学还是不可以导出左侧所有对话,只能单容导出,方法不对吗
前端
AiMan2 小时前
Grok生成的内容能否下载吗?
前端
徐小夕3 小时前
JitArchives,一款基于JitWord协同AI文档打造的企业级电子档案系统
前端·vue.js·github
陈随易3 小时前
Node.js 2026上半年都有哪些性能提升?
前端·后端·程序员
墨林陌3 小时前
AI 热点日报(2026-11-09):苹果代理式Siri曝光,Anthropic推进IPO,编码智能体实测翻车
前端