原型
- 原型对象 prototype
- 原型的作用
共享性
- 对象原型__proto__
1) 对象都会有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto__原型的存在
2)对象身上系统自己添加一个__proto__指向我们构造函数的原型对象 - 对象原型(proto)和构造函数(prototype)原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为它指回构造函数本身。
- constructor主要用于记录该对象引用于哪个构造函数,他可以让原型对象重新指向原来的构造函数。
function Star(uname,age){
this.uname = uname;
this.age = age;
}
// Star.prototype.sing = function(){
// console.log('我会唱歌')
// }
// Star.prototype.movie = function(){
// console.log('我会跳舞')
// }
//如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,会覆盖掉constructor,则必须手动的利用constructor指回原来的构造函数
Star.prototype = {
constructor:Star,
sing:function(){
console.log('我会唱歌')
},
movie:function(){
console.log('我会跳舞')
}
}
原型链
我们Star原型对象里面的__proto__原型指向的是Object.prototype
Star.prototype.proto ==Object.prototype
我们Object.prototype原型对象里面的__proto__原型,指向为null