前端面试题笔记一

申明:许多题目和答案摘抄自网上许多大佬的博客,我会尽量注明引用处,此文只做准备面试之用

1,防止javascript脚本读取cookie信息
如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击
HttpOnly的设置样例:
response.setHeader(“Set-Cookie”, “cookiename=value;
Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly”);

2,bind,call,apply实现:

Function.prototype.bind_ = function (obj){
    if(typeof this != 'function'){
        throw new Error("can't bind");
    }
    var args = Array.prototype.slice.call(arguments,1);
    var fn = this;
    var _fn = function (){}
    var bound = function (){
        var params = Array.prototype.slice.call(arguments);
        fn.apply(this.constructor === fn?this:obj,args.concat(params))
    }
    _fn.prototype = fn.prototype;
    bound.prototype = new _fn();
    return bound;
}

Function.prototype.call_ = function (obj){
    obj = obj?Object(obj):window;
    var args=[];
    obj.fn = this;
    for(var i=1;i < arguments.length;i++){
        args.push("arguments["+i+"]");
    }
    var res = eval("obj.fn("+args+")");
    delete obj.fn;
    return res;
}

Function.prototype.apply_ = function (obj,arr){
    obj = obj?Object(obj):window;
    obj.fn = this;
    var res;
    if(!arr){
        res = obj.fn();
    }else{
        var args = [];
        for(var i=0;i<arr.length;i++){
            args.push("arr["+i+"]");
        }
        res = eval("obj.fn("+args+")");
    }
    delete obj.fn;
    return res;
}

3,获取变量type:

function type(obj){
    var regexp = /\s(\w+)\]/;
    var res = regexp.exec(Object.prototype.toString.call(obj))[1];
    return res;
}

4,防抖和节流

function debounce(fn,delay){
    let timeout = null;
    return function (){
        clearTimeout(timeout);
        timeout = setTimeout(()=>{
            fn.apply(this,arguments)
        },delay)
    }
}

function throttle(fn,delay){
    let canrun = true;
    return function (){
        if(!canrun) return;
        canrun = false;
        setTimeout(()=>{
            fn.apply(this,arguments);
            canrun = true;
        },delay)
    }
}

4:深度拷贝:
JSON.parse(JSON.stringify(XXXX))

function copy (obj) {
        var newobj = obj.constructor === Array ? [] : {};
        if(typeof obj !== 'object'){
            return;
        }
        for(var i in obj){
           newobj[i] = typeof obj[i] === 'object' ?
           copy(obj[i]) : obj[i];
        }
        return newobj
}

5,img加载会影响渲染吗?
在这里插入图片描述
6:输入url到页面显示的步骤:
在这里插入图片描述
详细博文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值