当前位置:实例文章 » HTML/CSS实例» [文章]面向对象编程/原型及原型链

面向对象编程/原型及原型链

发布人:shili8 发布时间:2024-12-25 08:54 阅读次数:0

**面向对象编程与原型**

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它以对象为基本单位来组织软件设计。每个对象都具有自己的属性(data)和行为(methods),这些属性和行为共同构成了该对象的特征。

在 OOP 中,每个对象都是一个独立的实体,它们之间可以通过消息传递(message passing)进行通信。在这种编程方式下,程序员不再关注具体的实现细节,而是关注如何定义和使用这些对象及其属性和行为。

**原型**

原型(Prototype)是一种特殊的对象,它被用来创建其他对象。每个对象都有一个原型链(prototype chain),它指向其父类或上级对象。在 JavaScript 中,原型是通过 `__proto__` 属性来访问的。

javascript// 定义一个原型function Person(name) {
 this.name = name;
}

// 创建一个新对象,它的原型链指向 Person 原型let person1 = new Person('John');
console.log(person1.__proto__ === Person.prototype); // true// 创建另一个新对象,它的原型链也指向 Person 原型let person2 = new Person('Jane');
console.log(person2.__proto__ === Person.prototype); // true


在上面的例子中,我们定义了一个 `Person` 函数作为原型,创建了两个新对象 `person1` 和 `person2`。它们的原型链都指向 `Person` 原型。

**原型链**

原型链是通过 `__proto__` 属性来访问的,它指向父类或上级对象。在 JavaScript 中,每个对象都有一个原型链,直到它找到一个没有 `__proto__` 属性的对象(即顶层原型)。

javascript// 定义一个原型function Person(name) {
 this.name = name;
}

// 定义另一个原型,它继承自 Person 原型function Employee(name, department) {
 Person.call(this, name);
 this.department = department;
}

Employee.prototype = Object.create(Person.prototype);

let employee1 = new Employee('John', 'Sales');
console.log(employee1.__proto__ === Employee.prototype); // trueconsole.log(employee1.__proto__.__proto__ === Person.prototype); // true// 创建另一个新对象,它的原型链也指向 Employee 原型let employee2 = new Employee('Jane', 'Marketing');
console.log(employee2.__proto__ === Employee.prototype); // trueconsole.log(employee2.__proto__.__proto__ === Person.prototype); // true


在上面的例子中,我们定义了一个 `Person` 函数作为原型,创建了另一个函数 `Employee` 作为继承自 `Person` 原型的新原型。我们通过 `Object.create()` 方法来设置 `Employee` 原型链指向 `Person` 原型。

**继承**

继承是 OOP 中的一个重要概念,它允许子类继承父类的属性和行为。在 JavaScript 中,我们可以使用 `Object.create()` 方法来实现继承。

javascript// 定义一个原型function Person(name) {
 this.name = name;
}

// 定义另一个原型,它继承自 Person 原型function Employee(name, department) {
 Person.call(this, name);
 this.department = department;
}

Employee.prototype = Object.create(Person.prototype);

let employee1 = new Employee('John', 'Sales');
console.log(employee1.name); // Johnconsole.log(employee1.department); // Sales// 创建另一个新对象,它的原型链也指向 Employee 原型let employee2 = new Employee('Jane', 'Marketing');
console.log(employee2.name); // Janeconsole.log(employee2.department); // Marketing


在上面的例子中,我们定义了一个 `Person` 函数作为原型,创建了另一个函数 `Employee` 作为继承自 `Person` 原型的新原型。我们通过 `Object.create()` 方法来设置 `Employee` 原型链指向 `Person` 原型。

**总结**

面向对象编程是一种编程范式,它以对象为基本单位来组织软件设计。在 OOP 中,每个对象都是一个独立的实体,它们之间可以通过消息传递进行通信。原型是 OOP 中的一个重要概念,它允许子类继承父类的属性和行为。在 JavaScript 中,我们可以使用 `Object.create()` 方法来实现继承。

**参考**

* [MDN Web Docs - Object.prototype]( />* [MDN Web Docs - Function.prototype.call()]( />* [MDN Web Docs - Object.create()](

其他信息

其他资源

Top