来讲解一下“JS常见面试试题总结【去重、遍历、闭包、继承等】”的完整攻略。
一、去重
JS中去重的方法有很多种,我这里介绍两种比较常见的方法。
1.1 利用Set
去重
let arr = [1, 2, 3, 1, 2, 3];
let unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3]
1.2 利用reduce
方法去重
let arr = [1, 2, 3, 1, 2, 3];
let unique = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(unique); // [1, 2, 3]
二、遍历
JS中常用的遍历方法有很多种,比如for
循环、forEach
、map
、filter
等等。
2.1 for
循环遍历数组
let arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
2.2 forEach
方法遍历数组
let arr = [1, 2, 3];
arr.forEach((item) => {
console.log(item);
});
2.3 for...in
循环遍历对象
let obj = {a: 1, b: 2, c: 3};
for (let key in obj) {
console.log(key, obj[key]);
}
2.4 Object.keys
方法遍历对象
let obj = {a: 1, b: 2, c: 3};
let keys = Object.keys(obj);
keys.forEach((key) => {
console.log(key, obj[key]);
});
三、闭包
闭包是JS中一个很重要的概念,也是面试中常被问到的问题。下面是一个简单的例子:
function fn() {
let num = 0;
return function() {
num++;
console.log(num);
}
}
let f = fn();
f(); // 1
f(); // 2
f(); // 3
这里的fn
函数返回了一个内部函数,这个内部函数持有了fn
函数中定义的num
变量,并且每次调用这个内部函数的时候,num
变量的值都会加1。
四、继承
JS中的继承也是面试中经常问到的问题,下面是一个用ES6的class
关键字实现继承的例子:
class Animal {
constructor(name) {
this.name = name;
}
sayHi() {
console.log(`My name is ${this.name}`);
}
}
class Cat extends Animal {
constructor(name) {
super(name);
}
sayHi() {
console.log(`Meow, My name is ${this.name}`);
}
}
let cat = new Cat('Tom');
cat.sayHi(); // Meow, My name is Tom
这里我们定义了一个Animal
类和一个Cat
类,通过extends
关键字实现了Cat
类对Animal
类的继承,即Cat
类继承了Animal
类的所有属性和方法。同时,Cat
类还重写了sayHi
方法,使得猫叫和动物叫有所区别。
以上就是“JS常见面试试题总结【去重、遍历、闭包、继承等】”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS常见面试试题总结【去重、遍历、闭包、继承等】 - Python技术站