Files
ClassContent/模拟面试资料/面试题记录js.txt
2025-03-15 22:14:23 +08:00

82 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1call和apply区别
调用一个对象的一个方法,用另一个对象替换当前对象
例如B.apply(A, arguments); 即A对象应用B对象的方法。
而不同之处在于传递的参数,
apply最多只能有两个参数——新this对象和一个数组argArray如果arg不是数组则会报错TypeError
call则可以传递多个参数第一个参数和apply一样是用来替换的对象后边是参数列表。
https://www.w3school.com.cn/js/js_function_apply.asp
2. 闭包是什么,有什么特性,对页面有什么影响
答案:闭包就是能够读取其他函数内部变量的函数,使得函数不被回收,如果过多使用闭包,容易导致内存泄露
function a () {
var ddd = 1
function b () {
ddd+= 1
log(ddd)
}
return b;
}
var c = a();
c()
c()
c()
3深拷贝 浅拷贝
只针对对象和数组的
浅拷贝 相互影响
Object.assign() 只有源对象,没有目标对象时为浅拷贝
深拷贝 相互不影响
JSON.parse(JSON.stringify())
for in 遍历,然后递归赋值
Object.assign() 只有源对象,没有目标对象时为浅拷贝
4原型链
prototype 被定义为:给其它对象提供共享属性的对象。
既然 prototype 只是恰好作为另一个对象的隐式引用的普通对象。那么,它也是对象,也符合一个对象的基本特征。
也就是说prototype 对象也有自己的隐式引用,有自己的 prototype 对象。
如此,构成了对象的原型的原型的原型的链条,直到某个对象为 null整个链条终止。
在js中每个对象都有个 prototype 原型属性,原型属性是为其它对象提供共享属性的对象。而 prototype 本身也是个
对象,所以也有自己的 prototype 原型,如此构成了对象的原型的原型的原型的链条,直到某个对象为 null整个链条终止。
5数组去重
1定义一个新数组使用indexOf或者 includes 判断是否没有,如果没有就保存到新数组
2使用es6 的set因为set或者 Map是不允许重复的然后使用 Arrar.from 转换为数组 或者 使用object
3使用 splice ,依次判断前一位和后一位是否相等,然后从后向前删除
如何中断ajax请求
原生: ajax.abort()
Axios: cancelToken