面试题 js重写原生函数(以push为例)

先说明一下为什么要写这个,因为最近在面试,面试的时候面试官问了这个问题,当时是真的没有答上来,回来之后自己考虑了一下,现在给大家分享

要求如下:

重写js push函数,使其能够在push的同时打印出push的元素

分析

有的同学有可能想要用Array.Array.prototype.push = function(){}来重写,但是这样子的话push原本的函数内容就会丢失,你得重写push的逻辑,这样就很麻烦。于是我们想到得先把原本的push函数备份一下,然后重写的时候调用就可以了。

let _push = Array.prototype.push
Array.prototype.push = function(){
    for(let i of arguments){
        _push.call(this, i);
    }
    console.log('参数为', arguments);
}

let a = [1,2,3]
a.push(4,5,6)

这个时候控制台已经打印出了我们想要的结果

面试题 js重写原生函数(以push为例)_第1张图片

参考文档

  1. MDN web文档

你可能感兴趣的:(面试题 js重写原生函数(以push为例))