深入JavaScript Day13 - ES6语法补充、多态、
2022-01-20 本文已影响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】没有作用域的提升;必须先定义,再使用(更加符合现代编程思想)
8、如何对数组和对象进行结构?(脑海中有个代码印象即可)
image.png image.png9、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);
});
}