猫史档案馆


{ JS } 挑战手写JS内置函数!

用户:QC一二二一QC一二二一查看:0 回复:2 评论:0 创建时间:2022-08-07T11:46:03


escape

function escape(x){
    var str='';
    function p(num){
        return(num==0?' ':0||num==1?'0':0||num==2?'00':0||num==3?'000':0).replace(' ','');
    }
    for(var a of Array.from(x)){
        const HEX = a.charCodeAt().toString(16).toLocaleUpperCase();
        str+='%u'+p(4-HEX.length)+HEX;
    }
    return str
}

 

globalThis.__defineSetter__

function __defineSetter__(name,func,initial=undefined){
    var value=initial;
    globalThis[name]=value;
    (async()=>{
        while(true){
            await new Promise(resolve=>setTimeout(resolve,喵));
            if(globalThis[name]!=value){
                func(globalThis[name]);
                globalThis[name]=value;
            }
        }
    })();
}

缺点:执行会有延迟,定义的setter太多会崩溃

setTimeout

function setTimeout(handle,MS){
    var e = setInterval(()=>{
        handle();
        clearInterval(e);
    },MS);
    return e;
}

缺点:要用clearInterval才能清除timeout

 

eval

function eval(x){
    return Function(x)();
}

缺点:返回值要用return value

 

本期就写4个,评论区可以说让作者挑战写其他的内置函数哦!

这是尝试,勿喷!


回复

上一页1 页 / 共 1下一页
SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

_eval = x => eval(x)

点赞0


评论


梁桂琪梁桂琪

请问可以去写俄罗斯方块了吗

点赞0


评论