24.原型和原型链.html 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. // function fn1() {}
  11. // var x = function() {}
  12. // ( function() {
  13. // console.log("你好")
  14. // })()
  15. /**
  16. * 构造函数
  17. * 1.首字母大写
  18. * 2.new实例化调用
  19. * 3.this指向当前实例
  20. * 4.构造函数 不使用return返回值
  21. * 属性写在构造函数中 方法写在原型下
  22. */
  23. function Person() {
  24. console.log(this)
  25. // return 12;
  26. this.name = '图图';
  27. this.age = 3
  28. }
  29. /**
  30. * 原型
  31. * 1.所有的构造函数中都自带了一个prototype(显性)属性,指向当前构造函数的原型
  32. * 2.所有的构造函数中都自带了一个constructor(构造器)属性,指向的是当前原型的构造函数
  33. * 3.构造韩式可以通过new去进行实例化 产生构造函数的实例化对象
  34. * 4.实例化对象可以通过_proto_(隐性)属性去访问 该构造函数的原型对象
  35. *
  36. */
  37. Person.prototype.say = function() {
  38. console.log("你好")
  39. }
  40. // var p = new Person();
  41. // console.log(p);
  42. // p.say();
  43. var person = new Person();
  44. console.log(person)
  45. console.log(person.__proto__ == Person.prototype)
  46. console.log(Person.prototype.constructor == Person)
  47. console.log(Object.getPrototypeOf(person) === Person.prototype)
  48. /**
  49. * 原型链
  50. * 访问实例化对象属性 先从对象的本身找
  51. * 找不到 通过_proto_去对象原型找
  52. * 若还未找到 则在原型对象的原型上查找 找到则返回 找不到返回undefined
  53. */
  54. </script>
  55. </body>
  56. </html>