一篇文章 讲透彻js 的原型链

当谈到 JavaScript 的核心特性之一时,原型链无疑是其中之一。原型链是 JavaScript 对象之间关系的基础,理解它有助于更好地掌握 JavaScript 的面向对象特性。让我们深入探讨一下原型链。

1. 理解原型

在 JavaScript 中,几乎所有东西都是对象。每个 JavaScript 对象都有一个原型。原型是一个对象,其他对象可以从中继承属性和方法。新对象可以通过一个称为 prototype 的特殊属性来访问原型。当你创建一个新对象时,它会从原型继承属性和方法。

2. 构建原型链

每个对象都有一个指向它的原型的内部链接。当你试图访问对象的属性或方法时,如果该对象本身没有这些属性或方法,JavaScript 会沿着这个链接向上搜索直到找到对应的属性或方法为止。这个链条就是所谓的原型链。

3. proto 与 prototype

__proto__ 是每个 JavaScript 对象都具有的属性,它指向该对象的原型。而 prototype 是函数对象特有的属性,它指向在调用构造函数时新对象的原型。

4. 实现继承

利用原型链,JavaScript 实现了对象之间的继承。通过将一个对象的原型指向另一个对象,可以使一个对象继承另一个对象的属性和方法。

5. 经典的原型链例子

ini 复制代码
javascriptCopy code
function Animal(name) {
  this.name = name;
}

Animal.prototype.makeSound = function() {
  console.log("Some sound");
};

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!");
};

const myDog = new Dog("Buddy", "Golden Retriever");
myDog.makeSound(); // Outputs: Some sound
myDog.bark(); // Outputs: Woof!

在这个例子中,Dog 函数继承了 Animal 的属性和方法。通过 Object.create() 方法,Dog 的原型被设置为一个新的 Animal 实例,这样 Dog 就可以访问 Animal 的方法,同时也能拥有自己独特的方法。

有个图很形象可以参考

结论

原型链是 JavaScript 中对象之间关系的基础,它允许对象继承和共享属性和方法。了解原型链有助于更好地利用 JavaScript 的面向对象特性,并编写出更加灵活、高效的代码。

相关推荐
zhensherlock36 分钟前
Protocol Launcher 系列:Trae AI 编辑器的深度集成
javascript·人工智能·vscode·ai·typescript·编辑器·ai编程
吠品1 小时前
Vue项目Moment.js引入优化:全局挂载与按需引入的深度解析与最佳实践
前端·javascript·vue.js
不甜情歌1 小时前
JS 类型判断不用愁:4 种方法,覆盖所有场景
前端·javascript
共享家95271 小时前
单例模式( 饿汉式与懒汉式 )
开发语言·javascript·ecmascript
cmd1 小时前
前端基础必看:JS 变量提升 & 函数提升完整解析
前端·javascript
小金鱼Y1 小时前
前端必看:this 不是玄学!5 大绑定规则帮你永久告别 this 困惑
前端·javascript·面试
椰猫子1 小时前
html、css入门
开发语言·javascript·ecmascript
SuniaWang2 小时前
《Spring AI + 大模型全栈实战》学习手册系列·专题一:《RAG技术全景解析:从原理到架构设计》
java·javascript·人工智能·spring boot·后端·spring·架构
Irene19912 小时前
通过JavaScript创建新的img元素并指定onload事件,为什么要在赋值src属性之前指定事件处理程序?
javascript