__proto__、 prototype
时间: 2023-11-22 12:42:52 浏览: 45
__proto__是一个对象的属性,它指向该对象的原型。原型是JavaScript中一个重要的概念,用于实现对象间的属性继承。每个对象都有一个隐式的原型属性__proto__,指向构造该对象的函数的prototype属性。通过__proto__属性,对象可以访问并继承其原型对象上的属性和方法。
prototype是构造函数的属性,它指向构造函数的原型对象。原型对象是一个普通的对象,它包含了被构造函数创建的对象所共享的属性和方法。通过prototype,我们可以为构造函数添加新的属性和方法,这些属性和方法将被构造函数创建的所有对象所共享。
简而言之,__proto__属性是实例对象与其原型对象之间的连接,而prototype属性是构造函数与其原型对象之间的连接。
补充例子:
```
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log("Hello, " + this.name + "!");
}
let person = new Person("Alice");
person.sayHello(); // 输出 "Hello, Alice!"
console.log(person.__proto__ === Person.prototype); // 输出 true
console.log(Person.prototype.constructor === Person); // 输出 true
```
相关问题
js __proto__ prototype
在JavaScript中,每个对象都有一个`__proto__`属性,它指向对象的构造函数的原型对象。这个原型对象通常被称为`prototype`。 例如,对于一个对象`obj`,它的`__proto__`指向`obj`的构造函数的`prototype`,而`prototype`实际上是`Object.prototype`,其中`Object`是JavaScript内置的对象构造函数。
通过`prototype`,我们可以实现JavaScript中的对象继承。通过将一个对象的`prototype`属性设置为另一个对象,可以使得后者继承前者的属性和方法。例如,我们可以定义一个构造函数`A`,并在其原型对象上添加一个方法`show`,然后定义另一个构造函数`B`,将其原型对象设置为`A`的实例。这样,`B`的实例将继承`A`的方法。
总结起来,`__proto__`是每个对象都有的属性,它指向对象的构造函数的原型对象;而`prototype`是构造函数的属性,用于实现对象的继承。
Function.prototype.__proto__.__proto__ === null
这表达式是用来检查 Function.prototype 对象的原型链。根据 JavaScript 的原型继承机制,一个对象的 __proto__ 属性指向其构造函数的原型对象。因此,Function.prototype.__proto__ 指向 Object.prototype,再往上一级的原型是 null。
所以,Function.prototype.__proto__.__proto__ === null 是成立的。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)