__proto__和prototype区别__proto__和prototype区别
该笔记总结于作者畅coder的博客https://blog.csdn.net/lc237423551/article/details/80010100
-
__proto__
是每一个object都有的一个属性 -
__proto__
属性指向的就是他的构造函数的prototype -
什么是构造函数的prototype?
当定义一个构造函数的时候, 其实产生了两个东西, 一个是定义的东西(ES6中叫做类)本身, 一个是产生这个东西的构造者. 举个例子🌰, 我要生产月饼, 那么我要做一个模子出来, 造模子的机器就是构造者(月饼.prototype), 那么模子就是图中的Person, 它有一个属性, 叫做prototype, 指向了生产模子的机器, 机器有一个contrutor, 指向了产品(Person)
举个例子帮助理解(采用更好懂的ES6)
class Bravo{
constructor(name, age){
this.name = name;
this.age = age;
}
report(){
return `Hi, my name is ${this.name} and my age is ${this.age}.`
}
}
let bravo = Bravo(' Bravo Jack', 24);
console.log( bravo.__proto__ == Bravo.prototype ) // true