在 JavaScript 中,prototype 是一个非常重要的概念,它构成了 JavaScript 原型继承的基础。以下是关于 prototype 属性的详细解释:
prototype 是一个对象:每个函数都有一个 prototype 属性,它指向一个对象。
构造函数与 prototype:当函数作为构造函数使用时(通过 new 调用),新创建的对象会继承构造函数的 prototype 属性。
function Person(name) {
this.name = name;
}
// 给 Person 的 prototype 添加方法
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}`);
};
const person1 = new Person('Alice');
person1.sayHello(); // 输出: Hello, my name is Alice
原型链:当访问对象的属性时,JavaScript 会先查找对象本身,如果没有则查找其 prototype,依此类推直到 Object.prototype。
constructor 属性:默认情况下,prototype 对象有一个 constructor 属性指向函数本身。
Person.prototype.constructor === Person; // true
实例继承:所有实例共享同一个 prototype 对象上的属性和方法。
__proto__ 的区别prototype 是函数对象的属性__proto__ 是实例对象的属性,指向其构造函数的 prototypeperson1.__proto__ === Person.prototype; // true
虽然可以直接使用 prototype,但现代 JavaScript 提供了更简洁的类语法:
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, my name is ${this.name}`);
}
}
prototype 会影响所有已创建和将要创建的实例prototype 对象,这会破坏 constructor 的引用prototype 是 Object.prototype理解 prototype 是掌握 JavaScript 面向对象编程的关键,它构成了 JavaScript 继承机制的基础。
热门推荐:
0