美文网首页深入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