
面试题 js重写原生函数(以push为例)
发布日期:2021-05-13 01:00:19
浏览次数:14
分类:博客文章
本文共 472 字,大约阅读时间需要 1 分钟。
先说明一下为什么要写这个,因为最近在面试,面试的时候面试官问了这个问题,当时是真的没有答上来,回来之后自己考虑了一下,现在给大家分享
要求如下:
重写js push函数,使其能够在push的同时打印出push的元素
分析
有的同学有可能想要用Array.Array.prototype.push = function(){}
来重写,但是这样子的话push原本的函数内容就会丢失,你得重写push的逻辑,这样就很麻烦。于是我们想到得先把原本的push函数备份一下,然后重写的时候调用就可以了。
let _push = Array.prototype.pushArray.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)
这个时候控制台已经打印出了我们想要的结果
参考文档
- MDN web文档
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月13日 15时40分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
账号转账演示事务
2019-03-07
idea创建工程时错误提醒的是architectCatalog=internal
2019-03-07
SpringBoot找不到@EnableRety注解
2019-03-07
简易计算器案例
2019-03-07
在Vue中使用样式——使用内联样式
2019-03-07
Explore Optimization
2019-03-07
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2019-03-07
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
2019-03-07
小程序之wx:request(转)
2019-03-07
解决数据库报ORA-02289:序列不存在错误
2019-03-07
map[]和map.at()取值之间的区别
2019-03-08
成功解决升级virtualenv报错问题
2019-03-08
【SQLI-Lab】靶场搭建
2019-03-08
Xception 设计进化
2019-03-08
【Bootstrap5】精细学习记录
2019-03-08
SkyWalking性能剖析
2019-03-08
LeetCode197.打家劫舍
2019-03-08