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

要求如下:

重写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)

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

参考文档

  1. MDN web文档

    面试题 js重写原生函数(以push为例)的更多相关文章

    1. 《You dont know JS》原生函数

      原生函数 原生函数,即JavaScript的内建函数(built-in function).常用的原生函数有String().Number().Boolean().Array().Object().F ...

    2. JS的原生函数

      常用的原生函数有: String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol() 1 ...

    3. 类型和原生函数及类型转换(二:终结js类型判断)

      typeof instanceof isArray() Object.prototype.toString.call() DOM对象与DOM集合对象的类型判断 一.typeof typeof是一个一元 ...

    4. js经典试题之数组与函数

      js经典试题之数组与函数 1:列举js的全局函数? 答案:JavaScript 中包含以下 7 个全局函数escape( ).eval( ).isFinite( ).isNaN( ).parseFlo ...

    5. 前端面试题 -- JS篇

      前端面试题 -- JS篇 类型 1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型 js中共有null,undefined, string,number,boolean,object六种数 ...

    6. JS常用自定义函数总结

      JS常用自定义函数总结   1.原生JavaScript实现字符串长度截取 2.原生JavaScript获取域名主机 3.原生JavaScript清除空格 4.原生JavaScript替换全部 5.原 ...

    7. 前端开发面试题JS

      1.介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的数据类型 ) 2. ...

    8. js中getByClass()函数

      js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...

    9. js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域

      js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...

    随机推荐

    1. PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件

      PHP  多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...

    2. VS2015秘钥激活

      点击软件菜单栏的"帮助",点击"注册产品",点击"使用产品密钥解锁",附送产品密钥: 专业版:HMGNV-WCYXV-X7G9W-YCX63 ...

    3. windows server 2012配置php环境教程

      买了windows系统的服务器(VPS)等之后我们需要一个php环境来搭建自己的项目,这里介绍手工在windows server 2012上面配置php环境的具体步骤,适合使用服务器和VPS等的新手. ...

    4. 《linux就该这么学》课堂笔记14 Apache、SELinux、虚拟主机

      1.目前能够提供Web网络服务的程序有IIS(Windows系统中默认的Web服务程序,是一款图形化的网站管理工具).Nginx和Apache(RHEL 7系统中默认的Web服务程序)等. Apach ...

    5. windows定期删除文件

      :: 定时清理客户端上传导入包文件 @echo off title 清理客户端上传导入包文件 :: 导入包文件目录 set log_dir="F:\http\uploadzip\web\ht ...

    6. 【JavaScript】案例一:使用JS完成注册页面表单校验——事件(onsubmit&onfocus&onblur)

      (一)初版:事件(onsubmit) 步骤分析: 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据<获取数据时需要在指定位置定义一个 id> ...

    7. 爬虫篇-python爬虫中多线程的使用

      queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...

    8. woocommerce面包屑导航breadcrumb的修改

      我们知道woocommerce自带了面包屑导航breadcrumb,但有时我们需要调整一下它所在的位置,那么需要如何操作呢?有哪些参数可以调用呢?随ytkah一起来看看吧 首先删除默认的面包屑导航 1 ...

    9. 面向对象高级B(元类)

      元类 python一切皆对象,类实际上也是一个一个对象 类是一个对象,那他一定是由一个类实例化得到,这个类就叫元类 如何找元类 class Person: def __init__(self, nam ...

    10. 【myBatis】Error evaluating expression ‘’. Return value () was not iterable.

      被遍历的foreach不是数组或者集合