开篇先介绍下两位主角Object(宇宙之主)、构造函数(创造东西的模板)、 proteType(升级能力用的),大家不要小看这几样东西,new 构造函数().prototype瞬间创造出升级版的孩子。
    object堪称宇宙之主突然有一天感觉自己创造东西太慢了,于是乎脑洞大开,心想:”如果自己创造不同魔盒(出生就有升级版的文采,出生就有升级版的武才,出生就有升级版太监),不需要再精心培养,这样自己就可以大把时间潇洒了”,普通人都知道这是不可能的,任何出生的小宝宝都需要磨练,但是宇宙之神毕竟是神,他的想法最终实现了。接下来给大家讲讲他是怎么做到的,他创造了不同类型的魔盒(prototype),然后分配给文官、武官、太监如果想造一批升级版的文官,只需要通过文官放在魔盒中输入想要的能力,然后new就创造出来了,想要升级版的太监同理。。
    这里的prototype就是函数原型,文官、武官、太监其实是一个函数,文官.proteType就是赋给升级版的能力
    image.png
    image.png
    例子:
    这种方式不友好,每个出生的人类都要亲自培养,耗时耗力,体现在程序中就是我每增加一个属性方法之后,就需要调一遍,如果有一千遍我就需要写一千次,不符合程序设计

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. </head>
    8. <body>
    9. <script>
    10. /**
    11. *创建模板
    12. *
    13. **/
    14. function Person(name, age) {
    15. this.name = name;
    16. this.age = age;
    17. this.welcome = function () {
    18. console.log('哇哇,Hi, I am ', this.name);
    19. };
    20. }
    21. /**
    22. *创建对象
    23. *
    24. **/
    25. var person = new Person("taowuhua", 18)
    26. person.welcome();//这种方式不友好,每个出生的人类都要亲自培养,耗时耗力,体现在程序中
    27. //就是我每增加一个属性方法之后,就需要调一遍,如果有一千遍我就需要写一千次,不符合程序设计
    28. </script>
    29. </body>
    30. </html>

    image.png

    例子:
    这种方式就很牛x了,通过魔盒(protetype)然后输入welcome口令造出来的宝宝直接就拥有说欢迎语的能力

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. </head>
    8. <body>
    9. <script>
    10. /**
    11. *创建模板
    12. *
    13. **/
    14. function Person(name, age) {
    15. this.name = name;
    16. this.age = age;
    17. }
    18. /**
    19. *创建对象
    20. *
    21. **/
    22. var person = new Person("taowuhua", 18)
    23. Person.prototype.welcome = function () {
    24. console.log('哇哇,Hi, I am ', this.name);
    25. }//这种方式就很牛x了,通过魔盒然后输入welcome造出来的宝宝直接就拥有说欢迎语的能力
    26. </script>
    27. </body>
    28. </html>

    image.png
    例子:
    学习本领和魔盒给与本领

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. </head>
    8. <body>
    9. <script>
    10. /**
    11. *创建模板
    12. *
    13. **/
    14. function Person(name, age) {
    15. this.name = name;
    16. this.age = age;
    17. this.eat =function(){
    18. console.log(this.name+'Hi, 我是吃货');
    19. }
    20. }
    21. Person.prototype.welcome = function () {
    22. console.log('哇哇,Hi, I am ', this.name);
    23. }
    24. //创建的对象,陶务华因为学习了吃,拥有了吃的本领,但是因为魔盒创造的都拥有欢迎的本领
    25. var person = new Person("陶务华", 18)
    26. person.eat();//学习的过程
    27. person.welcome();
    28. //创建的对象,郭德纲不去学习不会吃的本领,但是因为魔盒创造的都拥有欢迎的本领
    29. var person1 = new Person("郭德纲", 18)
    30. person1.welcome();
    31. </script>
    32. </body>
    33. </html>

    使用protetype的优点:protetype大大减少了公共资源的占有率,很契合程序的设计。
    image.png
    person. prote ===Person.protetype