前端每日一面04

1、new操作符具体做了什么?

        1.在内存创建一个新对象

        2.把构造函数中this指向新建的对象

        3.会在新对象上添加一个__proto__属性,指向函数的原型对象prototype

        4.判断函数返回值,如果值是引用类型就直接返回值;否则返回this(创建的新对象)

2、说下什么是IIFE函数

        IIFE(立即调用函数表达式)是一个在定义时就会立即执行的函数。

3、浅拷贝与深拷贝有何区别?如何实现?

        浅拷贝:拷贝的是原对象的内存地址

        深拷贝:在内存中把原对象复制一份

        浅拷贝的实现方式有:

        (1)直接变量赋值

        (2)Object.assign();但目标对象只有一层的时候,是深拷贝;

        (3)扩展运算符(...);目标对象只有一层的时候,是深拷贝;

        深拷贝就是在拷贝数据的时候,将数据的所有引用结构都拷贝一份。

        深拷贝的实现方式有:

        (1)结合使用JSON.parse()和JSON.stringify()方法。

        (2)手写遍历递归赋值;

4、字符串截取方法substr、 substring、 slice三者的区别

        substr(n,m):截取的是字符串中索引为n开始的,并且截取m位

        substring(n,m):从索引为n的位置开始截取,

        截取到索引为m的位置但是不包含索引为m这一项

        slice(n,m):和substring一样,但是他可以支持负数索引

5、函数柯里化

        概念:把一个接收多个参数的函数变成接收单一参数 

        并且返回能够接收新参数的函数;比如:add(1)(2)(3)(4) = 10;

        function add(num){

            var sum=num;

            var fn=function(v){

                sum+=v;

                return fn

            };

            fn.toString=function(){

                return sum

            };

            return fn

        }

        console.log(add(1)(2)(3)(4)) // 10

6、判断Array类型的几种方式0

        1.[] instanceof Array

        2.[].constructor === Array

        3.Object.prototype.toString.call([]) === '[object Array]'

        4.Array.isArray([])

7.this指向的各种情况都有什么?

        1.全局作用域中的函数:非严格模式下其内部this指向window

        2.对象内部的函数:其内部this指向对象本身:

        3.构造函数:其内部this指向生成的实例:

        4.由apply、call、bind改造的函数:其this指向第一个参数:

        5.箭头函数:箭头函数没有自己的this,看其外层的是否有函数,

        如果有,外层函数的this就是内部箭头函数的this,

        如果没有,则this是window。

        (函数定义时的this,而不是调用时this)

8.什么是AJAX?如何实现?

        ajax是一种能够实现网页局部刷新的技术,可以使网页异步刷新。

        ajax的实现主要包括四个步骤:

        (1)创建核心对象XMLhttpRequest;

        (2)利用open方法打开与服务器的连接;

        (3)利用send方法发送请求;("POST"请求时,还需额外设置请求头)

        (4)监听服务器响应,接收返回值。

9.什么是高阶函数?

        高阶函数是对其他函数进行操作的函数;

        高阶函数就是一个接收函数作为参数或将函数作为输出返回的函数。

        例如,Array.prototype.map,Array.prototype.filter 和

        Array.prototype.reduce 是语言中内置的一些高阶函数。

后面更新的面试题都集合在这个链接中2022最全最新前端面试题(附加解答)_心如天然薄荷清凉的博客-CSDN博客_前端面试题

猜你喜欢

转载自blog.csdn.net/qq_55286942/article/details/125424175