原型:只要创建一个函数,就会有规则为函数创建一个prototype 属性 (指向原型对象)
JS的继承是基于原型的继承
**

一、原型

  1. /* 原型
  2. 1.obj.__proto__ 找到它的原型对象
  3. 2.数组上的方法都是挂载在原型上(Array.prototype)的
  4. */
  5. // toString() 因为数组的原型上有字符串toString()
  6. // push,unshift() 因为数组原型上有
  7. var arr = [1,2,3]
  8. console.log(Array.prototype);
  9. console.log(arr.__proto__);
  10. console.log(arr.__proto__ == Array.prototype);

QQ图片20201212143618.png

二、原型对象 (prototype)

  1. 共有的属性或者共有的方法我们可以放在原型对象上
  2. 原型对象的作用:将对象通用的方法挂载在原型上

QQ图片20201212152540.png
QQ图片20201212152547.png

  1. var arr= new Array(1,2,3)
  2. console.log(arr)
  3. Array.prototype.sum=function(value){
  4. if(Array.isArray(value)){
  5. return value.reduce((a,b)=>a+b)
  6. }
  7. }
  8. console.log(arr.sum(arr));
  9. 在数组的原型上添加http方法
  10. 方法名 http
  11. 输出 console.log("http")
  12. */
  13. Array.prototype.http=function(){
  14. console.log("http")
  15. }
  16. arr.http()

二、原型 - 图4

  1. <script>
  2. function Person(name, age) {
  3. this.name = name;
  4. this.age = age;
  5. }
  6. Person.prototype.sayName = function () {
  7. console.log(this.name)
  8. }
  9. var p = new Person("lisi", 30)
  10. console.log(p);
  11. p.sayName()
  12. </script>