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>寄生继承</title>
    7. </head>
    8. <body>
    9. </body>
    10. </html>
    11. <script>
    12. /**
    13. * 一种思路
    14. * 在原型的基础上增强了对象,返回新的构造函数
    15. *
    16. * 缺点
    17. * 无法传参
    18. * 共享 ·引用类型值· 修改一个全部修改
    19. * 没有用到原型 无法服用
    20. */
    21. function Fun(origin) {
    22. let t = Object.create(origin);
    23. t.name = 'my'
    24. t.my = function () {
    25. console.log(this);
    26. return `this.name is ${this.name}`
    27. };
    28. return t;
    29. }
    30. let origin = {
    31. name: "前端伪大叔",
    32. books: ["html", "css", "JavaScript"]
    33. };
    34. let fun = Fun(origin);
    35. let fun1 = Fun(origin);
    36. // 共享引用类型
    37. fun.books.push('vue')
    38. fun.books.push('react')
    39. console.log(fun.books); // (5) ["html", "css", "JavaScript", "vue", "react"]
    40. console.log(fun1.books); // (5) ["html", "css", "JavaScript", "vue", "react"]
    41. </script>