构造函数、原型对象
1.对象原型__proto__
对象都会有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto__原型的存在
- __proto__对象原型和原型对象prototype是等价的
- __proto__对象原型的意义就在于为对象的查找机制提供一个方向,但是它是一个非标准属性,因此实际开发中,不可以使用这个属性,它只是内部指向原型对象prototype
<!DOCTYPE html>
<html>
<body> <p>构造函数、原型对象</p>
<p>虽然构造对象上没有sing方法,但是原型对象上有,因为__proto__的存在,就去构造函数原型对象prototype上找到该方法
</p>
<script> function Star(uname,age){
this.uname=uname; this.age=age;
}
Star.prototype.sing=function(){
console.log("i can sing!!!");
}
var ldh = new Star('刘德华',54);
var zxy = new Star('lisa',53);
console.log(ldh); ldh.sing();
zxy.sing(); console.log(ldh.__proto__===Star.prototype);
</script>
</body>
</html>

2.构造函数prototype
对象原型(__proto__)和构造函数(prototype)原型对象都会有一个属性constructor属性。
constructor称为构造函数,指回构造函数本身。
如果修改了原本的原型对象,那么constructor将不能重新指回原先的对象
很多情况下需要手动将constructor构造函数这个属性重新指回构造函数
Star.prototype={
constructor:star,
sing: function(){
console.log('i can sing');
},
movie: function(){
console.log('i can act');
}
}



浙公网安备 33010602011771号