1.

  1. 1.obj.__proto__找到它的原型对象
  2. 2.数组上的方法都是挂载在原型上(Array.prototype)的
  3. var arr=[1,2,3];
  4. console.log(Array.prototype)//数组的所有方法
  5. console.log(arr.__proto__==Array.prototype)//true

2.原型的构造

  1. var arr=new Array(1,2,3);
  2. Array.prototype.sum=function(params){
  3. if(Array.isArray(params)){
  4. return arr.reduce((a,b)=>a+b);
  5. }
  6. }
  7. console.log(arr.sum(arr));
  1. var obj=[5,8,9,7];
  2. Array.prototype.http=function(){
  3. console.log("http")
  4. }
  5. arr.http();

3.原型对象

作用:将对象通用的方法挂载在原型上

  1. function Student(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Student.prototype.sayName=function(){
  6. console.log(this.name)//meng
  7. }
  8. var s=new Student("meng",18);
  9. s.sayName()
  10. console.log(s)//Student {name: "meng", age: 18}
  11. console.log(Student.prototype)//sayName: ƒ ()
  12. constructor: ƒ Student(name,age)
  13. __proto__: Object

11.png

  1. function Teacher(name,age){
  2. this.name=name;
  3. this.age=age;
  4. }
  5. Teacher.prototype.sayAge=function(){
  6. console.log(this.age)
  7. }
  8. var s=new Teacher("tom",35)
  9. console.log(s)