美文网首页深入JavaScript
深入JavaScript Day13 - ES6语法补充、多态、

深入JavaScript Day13 - ES6语法补充、多态、

作者: 望穿秋水小作坊 | 来源:发表于2022-01-20 08:44 被阅读0次

    1、一个语言灵活,好还是不好?

    • 灵活是一把【双刃剑】
    • 【优点】在实现需求的时候,可以有更多可以选择的思路和方式
    • 【缺点】灵活意味着门槛更高、维护更难、也容易出错

    2、什么是多态?(一句话描述多态的定义)

    • 对于不同类型的对象,执行同一个操作时,如果表现出来的行为(形态)不一样,那么就是多态。

    3、面向对象中,多态的三要素是什么?

    • ①必须有继承(是多态的前提)
    • ②必须有重写(子类复写父类的方法)
    • ③必须有父类引用指向子类对象

    4、【语法糖掌握】对象字面量增强写法、对象内部定义方法增强?

    var name = "why";
    var obj = {
      name,
      running: function () {
        console.log("常规写法");
      },
      eating() {
        console.log("对象内函数增强写法,语法糖");
      },
    };
    
    console.log(obj.name); // why
    obj.running(); //常规写法
    obj.eating(); //对象内函数增强写法,语法糖
    
    

    5、如何给对象动态设置属性名?如何动态决定获取对象内部哪个属性?

    var name = "why";
    var obj = {
      name,
      [name + "abc"]: "lsp",
    };
    
    console.log(obj); // { name: 'why', whyabc: 'lsp' }
    console.log(obj["name"]); // why
    console.log(obj[[name + "abc"]]); //lsp
    

    6、var、const、let 翻译过来分别是什么意思?

    • 【var】 是varibale的缩写,一般用于定义变量
    • 【let】是《让、运行》的意思,一般用于定义变量
    • 【const】是constant的缩写,一般用于定义常量

    7、JavaScript中 var 和 let 的区别?

    • 【var】有作用域提升;先使用,在定义,不会报错;
    • 【let】没有作用域的提升;必须先定义,再使用(更加符合现代编程思想)
    image.png

    8、如何对数组和对象进行结构?(脑海中有个代码印象即可)

    image.png image.png

    9、var没有块级作用域,导致一个经典的遗留问题?

    • 页面上定义四个button,添加点击事件。
    var btns = document.getElementsByTagName("button");
    for (var i = 0; i < btns.length; i++) {
      btns[i].addEventListener("click", function () {
        console.log(i);
      });
    }
    
    • 上述方案,无论点击哪个按钮,最终都是打印 4
    • 原有的解决方案
    var btns = document.getElementsByTagName("button");
    for (var i = 0; i < btns.length; i++) {
      (function (n) {
        btns[i].addEventListener("click", function () {
          debugger;
          console.log(n);
        });
      })(i);
    }
    
    • 现在的解决方案
    var btns = document.getElementsByTagName("button");
    for (let i = 0; i < btns.length; i++) {
      btns[i].addEventListener("click", function () {
        debugger;
        console.log(i);
      });
    }
    

    相关文章

      网友评论

        本文标题:深入JavaScript Day13 - ES6语法补充、多态、

        本文链接:https://www.haomeiwen.com/subject/jghrhrtx.html