美文网首页JS基础
JS面试题(概念题)

JS面试题(概念题)

作者: 凯凯frank | 来源:发表于2019-12-26 00:36 被阅读0次

    1.call 和 apply异同

    1)都是Fuction原型上的方法(每个方法的实例都能调用原型上的方法)
    2)都是用来改变this指向,
    区别:
    call是一个个传参,apply是数组传参
    (当参数多时,call的性能更好一点点,可以忽略不计....)

    用法:

     fn.call(obj, param1, params2, params2)
     fn.apply(obj, [param1, params2, params2])
    

    例子:

    let arr = [1,2,3]
    let obj = {}
    function fn(x,y,z){}
    fn.apply(obj, arr)// x=1, y=2, z=3
    fn.call(obj, arr) //x=[1,2,3], y=undefined, z=undefined
    fn.call(obj, ...arr) // es6展开运算符
    

    2. 箭头函数和普通函数的区别是什么,箭头函数可以用new生成实例吗?

    1). 箭头函数语法上比普通函数更加简洁

    function fn(x){
        return function(y){
            return x + y
        }
    }
    var fn1 = x => y => x+ y
    

    2). 箭头函数没有自己的this,他里面的this从属于函数所处的上下文(使用call、apply、bind等任何方式都无法改变this的指向)

    var obj = { name: 'kkk'}
    function fn(){
        console.log(this)
    }
    fn.call(obj) //fn函数中的this指向obj
    
    var fn2 = ()=>{
        console.log(this)
    }
    fn2.call(obj) //fn2函数中的this指向window
    fn2.bind(obj)() //fn2函数中的this指向window
    
    document.body.onclick = () =>{
        //this指向 window, 不是当前的body元素
    }
    document.body.onclick = function(){
        //this指向body元素
        [2,3,1].sort(function(a ,b){
            //this => window, 回调函数中的this一般都是window
            return a - b;
        })
    }
    

    3). 箭头函数中没有arguments(类数组), 可以使用...arg获取参数集合(数组)

    var fn = (...arg) => {
        console.log(args)
    }
    fn(1,2,3) // [1,2,3]
    

    4). 箭头函数不能new(因为箭头函数没有this,也没有prototype )

    3.说一说new的执行过程

    function Person(name, age){
        this.name = name;
        this.age = age;
    }
    const obj = new Person('frank', 20)
    
    1. 创建一个新对象
    2. 将构造函数的作用域赋给新对象(this也指向这个新对象)
    3. 执行构造函数中的代码(为这个新对象添加属性)
    4. 返回新对象

    4.说一说异步(EventLoop)

    浏览器的事件循环(Event Loop)

    5.说一说作用域和作用域链

    作用域和作用域链

    6.说一说浏览器的事件流

    浏览器事件流

    7.说一说浏览器的缓存机制

    浏览器的缓存机制



    点此查看JS面试题(算法篇)

    未完待续


    喜欢的朋友点个赞吧

    相关文章

      网友评论

        本文标题:JS面试题(概念题)

        本文链接:https://www.haomeiwen.com/subject/enjhoctx.html