一篇文章 讲透彻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 的面向对象特性,并编写出更加灵活、高效的代码。

相关推荐
Aerelin5 小时前
爬虫playwright入门讲解
前端·javascript·html·playwright
笙年5 小时前
JavaScript Promise,包括构造函数、对象方法和类方法
开发语言·javascript·ecmascript
桜吹雪5 小时前
LangChain.js/DeepAgents可观测性
javascript·人工智能
灵魂学者5 小时前
Vue3.x —— 父子通信
前端·javascript·vue.js·github
芳草萋萋鹦鹉洲哦7 小时前
【vue/js】文字超长悬停显示的几种方式
前端·javascript·vue.js
开发者小天7 小时前
React中的 闭包陷阱
前端·javascript·react.js
国服第二切图仔8 小时前
Electron for 鸿蒙pc项目实战之tab标签页组件
javascript·electron·harmonyos·鸿蒙pc
Neptune18 小时前
深入浅出:理解js的‘万物皆对象’与原型链
前端·javascript
阿迷不想上班8 小时前
windows自动任务定期执行
javascript
盗德9 小时前
最全音频处理WaveSurfer.js配置文档
前端·javascript