在原型上添加函数:用JS实现[1,2,3,4,5].duplicator()
来源:互联网 发布:软件母版 编辑:程序博客网 时间:2024/06/05 17:00
上周四的数梦工场前端开发实习生笔试有这么一道题:要求你用JS实现[1,2,3,4,5].duplicator()。当然数组是任意的JS中数组是对象,当然可以添加方法。复制,就用数组的splice接口实现呗,看起来很简单,实则是有陷阱的。
我想到的代码是这样的:
var arr=[1,2,3,4,5];arrar.foo=function () { var length=arr.length; for (var i=0;i<length;i++){ arr.splice(length+i,0,arr[i]); } console.log(arr);};arr.foo();
执行结果:
[ 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, foo: [Function] ]
是一次失败的尝试,foo也成了数组的元素,这是我们不愿意看到的。
如果你熟悉JS的原型链的话,你就会立刻想到解决方法:在原型上添加函数。每当代码读取某个对象的某个属性时,都执行一次搜索,会先后搜索实例对象,原型对象,如果有继承关系,则会向上搜索。
所以解决的代码是:
var arr=[1,2,3,4,5];Array.prototype.foo=function () { var length=arr.length; for (var i=0;i<length;i++){ arr.splice(length+i,0,arr[i]); } console.log(arr);};arr.foo();
执行结果
[ 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 ]
0 0
- 在原型上添加函数:用JS实现[1,2,3,4,5].duplicator()
- 数组的原型方法:实现[1,2,3,4,5].duplicator()
- Professional JS(6.2.4-6.3.1)组合使用构造函数模式&原型模式---原型链
- js构造函数,原型对象,继承 (3)
- js构造函数,原型对象,继承 (2)
- js构造函数,原型对象,继承 (1)
- 原型链的继承都发生在构造函数上
- 深入分析JS原型链以及为什么不能在原型链上使用对象
- 构造函数+原型混合方式实现js的继承
- 9.1 在函数上添加包装器
- strstr()函数原型实现
- 实现qsort函数原型
- javascript面向对象-组合使用构造函数和原型模式时在原型对象添加init函数
- 在立即执行函数内组合使用构造函数模式和原型模式创建对象,实现模块化开发(以daterangepicker.js为例)
- 在Function原型上扩展
- JS构造函数与原型
- JS构造函数与原型
- JS-函数、对象与原型
- 解决老浏览器不支持ES6的方法
- 正则表达式
- python学习(2)
- iOS
- 桟的链式存储结构分部操作
- 在原型上添加函数:用JS实现[1,2,3,4,5].duplicator()
- mongodb3.4.3 集群搭建
- GDOI2017再次旅游滚粗记
- 计算机视觉界期刊
- github上传、git不存在git init选项、本地更新到远程的解决办法
- 移动端侧滑显示删除按钮(与VUE框架整合)
- mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
- 理解OAuth 2.0
- PHP慢日志 ELK+FileBeat收集