博客列表 >箭头函数常用场景,es6中class原型与原型链属性-Es6-49课9.3

箭头函数常用场景,es6中class原型与原型链属性-Es6-49课9.3

希望
希望原创
2020年09月06日 20:10:23896浏览

1、箭头函数语法,常用场景

  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. <script>
  10. // 1. 无参数
  11. let f1 = function () {
  12. console.log("f1()");
  13. };
  14. f1();
  15. // 箭头函数,没有参数,圆括号不能省
  16. f1 = () => console.log("->f1()");
  17. f1();
  18. // IIFE:立即函数
  19. // (() => console.log("->f1()"))();
  20. console.log("---------");
  21. // 2. 单个参数
  22. let f2 = function (item) {
  23. console.log(`f2(${item})`);
  24. };
  25. f2("item");
  26. // 箭头函数
  27. f2 = (item) => console.log(`->f2(${item})`);
  28. f2("item");
  29. console.log("---------");
  30. // 3. 多个参数
  31. let f3 = function (...items) {
  32. console.log("f3()", items);
  33. };
  34. f3(1, "a", 3, 4);
  35. // 箭头函数,多条语句时一定要加大括号{}
  36. f3 = (...items) => {
  37. console.log(this);
  38. console.log("->f3()", items);
  39. };
  40. f3(5, 6, "b", 8);
  41. </script>
  42. </body>
  43. </html>

  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. <script>
  10. let user = {
  11. // 属性
  12. name: "小刘",
  13. // 方法
  14. getName: function () {
  15. // 解决了this指向问题
  16. setTimeout(() => {
  17. console.log(this);
  18. console.log("My name is ", this.name);
  19. }, 1000);
  20. },
  21. };
  22. user.getName();
  23. // 箭头函数主是要替代之前的函数表达式
  24. // 箭头函数没有自己的this,支持词法作用域/块级作用域
  25. </script>
  26. </body>
  27. </html>

2、es6中class原型与原型链属性

  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>es6中的class类</title>
  7. </head>
  8. <body>
  9. <script>
  10. // 原生js中没有类, 通过"构造函数"模拟类
  11. function Person(name) {
  12. // 属性
  13. this.name = name;
  14. }
  15. // 公共方法放在函数的原型对象上
  16. Person.prototype.sayName = function () {
  17. return this.name;
  18. };
  19. let person = new Person("小李");
  20. let person1 = new Person("小刘");
  21. console.log(person);
  22. console.log(person1);
  23. // es6方法
  24. class PersonClass {
  25. // 构造方法
  26. constructor(name) {
  27. this.name = name;
  28. }
  29. // 原型方法
  30. sayName() {
  31. return this.name;
  32. }
  33. }
  34. person = new PersonClass("小王");
  35. console.log(person.sayName());
  36. // 函数, 任何一个函数都有下面二个
  37. function fn(a, b) {}
  38. console.dir(fn);
  39. // prototype: 原型属性: 当函数是构造函数时,才有用
  40. // __proto__: 原型链属性, 因为函数也是对象
  41. console.log(fn instanceof Object);
  42. // 对象: 任何对象都有一个__proto__
  43. console.log({});
  44. console.log({}.toString());
  45. // __proto__: 原型链属性
  46. // 构造函数的原型属性 prototype,上面是当前构造函数的所有实例所共享的属性和方法
  47. function A() {
  48. }
  49. console.dir(A);
  50. let a = new A();
  51. console.log(a);
  52. // 1. 函数有二个重要的属性
  53. // 原型属性: prototype, 做为构造函数的时候才会用到,当该属性的指针指向新对象的__proto__
  54. // 原型链属性: __proto__, 因为任何一个对象都有这个属性,指向自己的公共方法,函数也是对象,当然也有这个属性
  55. </script>
  56. </body>
  57. </html>
  • 总结:
  • 箭头函数解决了this当前变量指向问题
  • 任何一个函数都有两个属性:prototype__proto__
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议