返回
深度解析 JavaScript 原型,扫除困惑,一目了然!
前端
2023-10-06 14:19:43
在 JavaScript 领域,原型是一个至关重要的概念,但它往往令人困惑。本文旨在通过简洁清晰的语言,彻底解析原型,让您一目了然。
许多文章借助复杂的箭头图阐述原型,却徒增晦涩难懂。本篇则采用纯文本形式,为您提供最直白的理解方式。
原型
JavaScript 中没有类,但它通过原型实现了面向对象编程。每个函数都包含一个原型对象,而所有对象都继承自一个公共原型对象 Object.prototype
。原型存储着对象中共享的属性和方法,以避免重复定义。
原型链
原型链是一个对象到其父原型的指向链。当一个对象试图访问一个不存在于自身中的属性或方法时,它会沿着原型链向上查找,直到找到该属性或方法,或者到达 Object.prototype
。
实例演示
让我们创建一个对象 person
:
const person = {
name: "John",
};
person
对象的原型是 Object.prototype
:
person.__proto__ === Object.prototype; // true
当我们访问 person.name
时,JavaScript 会在 person
对象中查找 name
,找不到后会沿着原型链向上查找,最终在 Object.prototype
中找到 hasOwnProperty
方法:
person.hasOwnProperty("name"); // true
prototype
每个函数都有一个 prototype
属性,指向其原型对象。我们可以通过修改 prototype
来向函数的所有实例添加属性或方法:
function Person() {
this.name = "John";
}
Person.prototype.greet = function() {
console.log("Hello, I'm " + this.name);
};
const person1 = new Person();
person1.greet(); // 输出:"Hello, I'm John"
总结
JavaScript 中的原型是一个强大的机制,它允许对象继承属性和方法。原型链确保了对象可以访问它们没有显式定义的属性和方法。通过理解原型,您可以更深入地理解 JavaScript 中的面向对象编程。