__proto和prototype的区别
时间: 2023-09-03 14:15:15 浏览: 110
`__proto__`是一个对象的内置属性,它指向该对象的原型对象。而`prototype`是函数对象的一个属性,它指向该函数的原型对象。
具体来说,对于一个实例对象,其`__proto__`指向其构造函数的`prototype`。而对于一个函数对象,它的`prototype`指向它创建的实例对象的原型对象。
举个例子,假设有以下代码:
```javascript
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}, I am ${this.age} years old.`);
};
const person = new Person('Alice', 25);
```
那么,对于`person`对象,它的`__proto__`指向`Person.prototype`,即:
```javascript
console.log(person.__proto__ === Person.prototype); // true
```
而对于`Person`函数对象,它的`prototype`指向创建的实例对象的原型对象:
```javascript
console.log(Person.prototype.isPrototypeOf(person)); // true
```
总之,`__proto__`是实例对象内部指向原型对象的一个属性,而`prototype`是函数对象的一个属性,指向它创建的实例对象的原型对象。
阅读全文