[].dumplicate()

面试的时候遇到一道题让我突然蛋疼菊紧:

2、请写出[1, 2, 3].dumplicate() 的方法实现输出结果为[1, 2, 3, 1, 2, 3]。

= =方法本来就不难写, return 此数组.concat(此数组), 一行搞定!得某。。。。。。老子不知道该怎么做到[1, 2, 3].xxx方法()这样啊!!!

要是丢到一个xxx方法(arr),答案就呼之欲出了。但是要[].dumplicate()这样的格式OTZ

os:“你可以的,你很棒,加油,今天是星期三,我穿的是红色的内裤,爸爸的妈妈叫奶奶” 心中一条条弹幕过去。偶都尅?!

 

突然脑中灵光一现,一抹微笑浮现“心机丝袜一直模拟太子,搜得噶,欧雷瓦,滚筒洗衣机”

可以利用Array.prototype.xxx = function () {} 这样的方式强行声明方法, [1, 2, 3]这个反正会默认转换为Array.完美!于是把答案写了上去

Array.prototype.dumplicate = function () {

  return this.concat(this)

}

目测大概也许应该可能好像是正确答案吧。

回去以后电脑上测试了一波,但最后[1, 2, 3].dumplicate()的时候报了一个错误Uncaught TypeError: Cannot read property 'dumplicate' of undefined

what?!没有定义?这不科学!

最后var arr = [1, 2, 3]

arr.dumplicate()的时候却可以成功get到方法

 

接下去继续尝试.......(N久以后)

function _dumplicate () {

  return this.concat(this)

}

Array.prototype.dumplicate = _dumplicate

[1, 2, 3].dumplicate()就可以实现效果?

 

OTZ到现在为止不知道原理,如果有大神出现愿意解答的话那可以在下面留下回复

这里只是做一个记录,同时也是给广大面试的苦逼前端工程师们一个新的套路以致于不会临时遇到二脸茫然

posted @ 2016-09-21 13:54  nannan95  阅读(286)  评论(0编辑  收藏  举报