近期面试题汇总-js系列

1. 什么是工厂函数

工厂函数是一个返回对象的类。
实现方式:在函数内部new一个对象,给对象添加属性后返回。

function factory(name, age, job) {
    let obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.job = job;
    obj.sayName = function() {
        alert(this.name);
    }
    return obj;
}

以上就是一个工厂函数。工厂函数就像一个模具,生产出来的对象都是一样的。

2. 发布订阅模式是如何实现的

3. 什么是跨域?如何解决跨域问题?

4. js的数据类型有哪些?基本数据类型和引用数据类型有什么区别?

Javascript有6种简单数据类型(也成为基本数据类型):Undefined、Null、Boolean、Number、String、Symbol(ES6新增)和1种复杂数据类型:Object。
基本数据类型和引用数据类型的区别:
基本数据类型存放在栈内存中,保存的是值,变量之间赋值之后是独立的,互不影响;
引用对象类型的实际值存放于堆内存中,栈内存中存放的只是一个内存地址的引用(即指针),变量之间赋值,交换的是内存地址,两个变量指向的是同一个对象,无论改变哪个都会影响到另一个。

5. 判断数据类型的方法有哪些?返回值是什么?

6. 需要用到多个ajax请求的返回数据,该怎么处理?

7. 如何实现深拷贝?

8. map和forEach的区别?

forEach改变原数组,不会返回执行结果;
map不会改变原数组,创建一个新数组并返回

9. ES6 新增的特性

10. 箭头函数和普通函数的区别?

参考:箭头函数与普通函数的区别

11. event loop

12. Object常用的方法有哪些?

13. 循环数组的方法有哪些?

14. 字符串去重有哪些方法?

15. getQuery()获取url参数

16. Promise实现delay函数

function delay(time) {
	return new Promise((resolve, rejected) => {
		setTimeout(function() {
			resolve();
		}, time)
	}).then(() => {
		// 执行的内容
	})
}

17. 自定义事件

18. 宏任务和微任务

19. post请求如何跨域?

20. 防抖和节流的作用是什么?有什么区别?

防抖和节流

21. promise、async 和 await

22. let 和 var 同时声明一个变量,变量的值是多少?

23. typeof null返回什么

返回’object’,因为在内存中,判断为object的条件是二进制表示前三位为0,而null的二进制表示全为0;

24. 基本数据类型的值存放在哪里?引用类型的值存放在哪里?

基本数据类型的值存放在栈内存中,引用数据类型的值存放在堆内存中,栈内存中存放的是堆内存的引用地址。

25. 箭头函数可以作为构造函数吗?

26. 箭头函数中怎么使用arguments?

27. 数组和类数组的区别是什么?哪些是类数组?如何将类数组转换为数组?

类数组的特点:

  • 具有length属性,其他属性均为非负整数的字符串
  • 不具有数组所具有的方法
  • 原型是一个对象(Object),而数组的原型是Array

类数组例子:

  • arguments
  • js 获取的DOM节点,如:document.getElementsByClassName();

类数组转换为数组的方法:

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
// ES5
// 方法一
let arr1 = Array.prototype.slice.call(arrayLike);
// 方法二
let arr2 = [].slice.call(arrayLike);
// 方法三
let arr3 = Array.from(arrayLike);

输出如图:
在这里插入图片描述

28. window.opener有哪些用途?

window.opener() 返回打开通过 window.open() 方法当前窗口的那个窗口的引用。如果当前页面不是由其他窗口打开的,则返回 null。
在实际应用中,子页面可以通过 window.opener() 调用父页面的方法并传参。

29. history的state有哪些用途?

history.state是一个只读属性,返回一个表示历史堆栈顶部的状态的值。这是一种可以不必等待popstate 事件而查看状态的方式。

30. git flow 分支管理策略
31. axios、fetch、ajax的区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值