js 构造函数 原型 和实例之间的关系
时间: 2024-03-08 22:46:32 浏览: 15
在 JavaScript 中,每个构造函数都有一个原型对象,它存储着构造函数的方法和属性。当我们创建一个实例时,实例会继承构造函数的原型对象上的方法和属性。
具体来说,我们可以通过构造函数的 `prototype` 属性来添加方法和属性,这些方法和属性会被构造函数的所有实例所共享。而实例则可以通过 `__proto__` 属性来访问它所继承的构造函数的原型对象上的方法和属性。
举个例子,假设我们有一个构造函数 `Person`:
```
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}`);
}
```
我们可以通过 `new` 关键字来创建 `Person` 的实例:
```
const person = new Person('Tom');
```
此时,`person` 实例会继承 `Person` 构造函数的原型对象上的方法 `sayHello`。我们可以通过以下方式来访问 `sayHello` 方法:
```
person.sayHello(); // 输出:Hello, my name is Tom
```
同时,我们也可以通过 `__proto__` 属性来访问 `Person` 构造函数的原型对象:
```
console.log(person.__proto__ === Person.prototype); // 输出:true
```