构造函数、原型对象

 

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');
  }
}

 

 

 

 

posted @ 2020-11-26 20:39  dengluming2  阅读(52)  评论(0)    收藏  举报