原型
原型本质就是一个对象无论何时,只要你创建了一个函数function那么就会有其prototype指向其原型对象,如下声明了一个Person函数,然后在给其原型对象上添加一个a属性,输出一下看看他的原型对象上是否添加了a属性,结果发现原型对象上有a属性,所有的原型都有一个construstor属性,这个construstor指向与其关联的函数。每个通过构造函数创建的实例都有一个属性__proto__,它指向的也是构造函数的原型对象。
function Person (x){
this.x = 1
}
Person.protype.a = 2
const person = new Person()
console.log(Person.prototype);
console.log(Person.prototype.constructor ==Person);
console.log(person.__proto__);
原型链
原型链的理解就是如果你在当前原型上没有找到对应的属性或方法,那么他就会向上级找,一级一级的查找,直到找打Object层为止,找不到就赶回undefined
function Person (x){
this.x = 1
}
const person = new Person(1)
Person.prototype.a = 2
Object.prototype.b = 3
console.log(person.a);
console.log(person.b);
console.log(person.c);
以上就是我对原型与原型链的理解