原型的作用是什么?

    之所以存在原型是因为JS语言要实现面向对象,而原型是面向对象的实现手段之一,一个能支持面向对象的语言必须要做到一点:能判断一个实例的类型,在JS中,通过原型可以知晓某一个对象从属于哪个类型,换句话说,原型的存在避免了类型丢失

    任何一种语言要实现面向对象有两种方式:

    • 基于类型的元数据
      • java、c#这些强类型的语言都有类型元数据区,他是内存中的一块特殊的区域,当你写好一个类过后,程序运行的过程中,他会把你的类型记录下来,记录到这个类型元数据区域
    • 基于原型来记录类型
    {
      name:'旺财'
    }
    {
      name:"hello kitty"
    }

    如果不记录类型的话,上面的两个对象属性完全一样,如果说我们希望第一个对象是属于一条狗的对象,第二个对象是属于一只猫的对象,我们该怎么表达这个东西呢?对于计算机而言两者是一样的,都有一个属性是name,只是name的值是不一样的

    如果是一个不支持面向对象的语言就需要下面的写法:

    {
      type:'狗'
      name:'旺财'
    }
    {
      type:'猫'
      name:"hello kitty"
    }

    所以原型就是用来记录对象是那个类型的,通过原型我们可以往上追溯到不同的对象类型