JS中万物皆对象,所有的实例,类,构造器实例,其本质都是对象,也就是 { },
一般来说,JS中内置的构造类型对象(Number,Array,String,Function,Object,Set)都默认有一个prototype属性(键),其值是一个对象,被称为 原型对象,prototype对象将会被其子级继承,其实现方法是用一个名为proto的属性键来指向这个对象,
所以父级的 prototype 属性 等于 子级的proto属性。
可以通过原型对象来为自己的孩子添加公用方法,有两种获得原型对象的方法。

1.通过实例对象获得原型对象

我们创建一个新的空对象 {} 或者 数组 [] ,或者通过 new 调用类的构造函数 (比如一个new出来的对象cat) 都可以创建一个实例对象,对于实例对象来说,他的原型对象就是cat.proto(双下划线),可以在后接函数来为cat对象添加新的方法,cat.proto.eat=function(){}(双下划线)

  1. let arr = []
  2. let prototype = arr.__proto__ //这样就获得了原型对象

2.通过构造函数获得原型对象

比如cat的构造函数是Cat(),则原型对象就是Cat.prototype

  1. //编写Cat的构造函数
  2. function Cat(){
  3. name:'猫猫',
  4. action:'吃鱼'
  5. }
  6. let cat = new Cat();
  7. //1.通过对象名获得原型对象为cat添加新方法
  8. cat.__proto__.eat = function(){
  9. console.log("eat");
  10. }
  11. //2.通过构造函数获得原型对象
  12. Cat().prototype.eat = function(){
  13. console.log("eat");
  14. }