JS构造函数、实例和原型对象

构造函数

<script>
    function Persion(name,age){
      this.name = name
      this.age = age
      this.mover = function(){
        console.log("三生三世十里桃花")
      }
    }
    let dlrb = new Persion("迪丽热巴",24)
    console.log(dlrb)
</script>

构造函数是特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总是和new一起来使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

new在执行时会做四件事情:

1:在内存中创建一个新的空对象。

2:让this指向这个新对象。

3:执行构造函数里面的代码,给这个新对象添加属性和方法。

4:返回这个新对象

构造函数里面的属性和方法叫成员 成员分为实例成员和静态成员

实例成员就是在构造函数内部通过this添加的成员 实例成员只能通过实例化的对象来访问 不能通过构造函数来访问实例成员

静态成员 在构造函数本身添加的成员 静态成员只能通过构造函数来访问

<script>
    function Persion(name,age){
      this.name = name
      this.age = age
      this.mover = function(){
        console.log("三生三世十里桃花")
      }
    }
    let dlrb = new Persion("迪丽热巴",24)
    console.log(dlrb.name)  //name age 都是实例成员
    console.log(Persion.name)//访问不到
    Persion.sex="女"
    console.log(Persion.sex)
    console.log(dlrb.sex)  //访问不到
  </script>

构造函数原型 prototype 

构造函数通过原型分配的函数是所有对象所共享的 每一个函数都有一个prototype属性

原型就是一个对象 也称为prototype为原型对象 用来共享方法

<script>
    function Persion(name,age){
      this.name = name
      this.age = age
      this.movie = function(){
        console.log("三生三世十里桃花")
      }
    }
    let dlrb = new Persion("迪丽热巴",24)
    console.log(dlrb.name)  //name age 都是实例成员
    console.log(Persion.name)//访问不到
    Persion.sex="女"
    console.log(Persion.sex)
    console.log(dlrb.sex)  //访问不到
    let ym = new Persion("杨幂",24)
    //浪费内存 dlrb ym movie都开辟了一个新的内存空间
    console.log(dlrb.movie==ym.movie)  //false
    Persion.prototype.marriage = function(){
      console.log("我们都是单身狗")
    }
    console.log(dlrb.marriage==ym.marriage)
  </script>

对象身上系统自己添加一个__proto__指向构造函数的原型对象

constructor构造函数

对象原型(__proto__)和构造函数(prototype)原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为它指回构造函数本身。

关系图

おすすめ

転載: blog.csdn.net/xy19950125/article/details/121102194
おすすめ