JS中万物皆对象,所有的实例,类,构造器实例,其本质都是对象,也就是 { },
一般来说,JS中内置的构造类型对象(Number,Array,String,Function,Object,Set)都默认有一个prototype属性(键),其值是一个对象,被称为 原型对象,prototype对象将会被其子级继承,其实现方法是用一个名为proto的属性键来指向这个对象,
所以父级的 prototype 属性 等于 子级的proto属性。
可以通过原型对象来为自己的孩子添加公用方法,有两种获得原型对象的方法。
1.通过实例对象获得原型对象
我们创建一个新的空对象 {} 或者 数组 [] ,或者通过 new 调用类的构造函数 (比如一个new出来的对象cat) 都可以创建一个实例对象,对于实例对象来说,他的原型对象就是cat.proto(双下划线),可以在后接函数来为cat对象添加新的方法,cat.proto.eat=function(){}(双下划线)
let arr = []
let prototype = arr.__proto__ //这样就获得了原型对象
2.通过构造函数获得原型对象
比如cat的构造函数是Cat(),则原型对象就是Cat.prototype
//编写Cat的构造函数
function Cat(){
name:'猫猫',
action:'吃鱼'
}
let cat = new Cat();
//1.通过对象名获得原型对象为cat添加新方法
cat.__proto__.eat = function(){
console.log("eat");
}
//2.通过构造函数获得原型对象
Cat().prototype.eat = function(){
console.log("eat");
}