1.原型对象
prototype叫原型,是每一个构造函数身上的一个属性,这个属性是以对象的形式存在的
function People() {
this.uname = 'zs';
}
console.dir(People);
构造函数与prototype之间的关系
原型对象的作用: 用来设置构造函数中的公共方法,避免内存浪费
原型对象的使用: 构造函数.prototype.方法名 = function(){}
2.对象原型(__proto__)
每一个实例对象身上的一个属性,该属性是以对象的形式存在的(对象原型)
function People() {
this.uname = '张三';
}
let zs = new People();
console.dir(zs);
原型对象(prototype)与对象原型(__proto__)之间的关系
3.constructor
constructor是原型对象和对象原型身上都有的一个属性
作用 : 用来记录当前原型对象或对象原型属于哪个构造函数
function Fn(){}
console.log('prototype',Fn.prototype);
let zs = new Fn();
console.log('__proto__',zs.__proto__);
原型对象、对象原型和constructor之间的关系
4.原型链
当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么就会去prototype里找这个属性,还是找不到的话就会去这个prototype里面的prototype里找,就会一直这么找下去,这就是原型链