14.寄生式继承.html 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. * 通过Object.create创建父对象
  14. * 在创建的对象上添加一些拓展属性和方法
  15. * 返回创建的对象
  16. * 优点:
  17. * 不需要构造函数 不需要new
  18. * 可以给对象统一的添加属性和方法
  19. * 缺点:
  20. * 不能传参
  21. * 共享实例 一个发生改变则全部改变
  22. */
  23. function createObj(x) {
  24. let obj = Object.create(x);
  25. obj.address = '上海';
  26. obj.say1 = function () {
  27. console.log("hi");
  28. }
  29. return obj;
  30. }
  31. let Father = {
  32. name: "图图",
  33. age: 3,
  34. list: ["吃饭", "睡觉", "打豆豆"],
  35. say() {
  36. console.log("hello");
  37. }
  38. }
  39. let Child = createObj(Father);
  40. let Child1 = createObj(Father);
  41. Child.list.push("玩耍");
  42. console.log(Child, 'child')
  43. console.log(Child1, 'child')
  44. Child.say();
  45. Child.say1();
  46. </script>
  47. </body>
  48. </html>