2017-02-28 128 views
1

今天我在求職面試 - 我已經被提交了一個任務。 我從來沒有encoutered這樣的功能,所以它是:如何用參數觸發一個任意函數Javascript

寫下一個函數,它觸發這樣的後:

console.log('hello'.repeatify(3)) 

回報

hellohellohello 

我試圖創建一個空對象和追加方法repeatify,但我只是不知道如何觸發它只是'你好'。

也許我應該改變console.log方法?

感謝您的幫助:)

回答

7

是不是真的很難。您必須爲String.prototype創建新函數,並使用repeat()函數將給定的字符串乘以給定的參數。

String.prototype.repeatify = function(count){ 
 
    return this.repeat(count); 
 
}; 
 

 
console.log('hello'.repeatify(3))

+1

謝謝你,先生! – Pravissimo

6

您可以爲每一個對象自己的原型方法,但你不應該與本地對象做到這一點:

String.prototype.repeatify = function(num) { 
 
    return this.repeat(num); 
 
} 
 

 
console.log('hello'.repeatify(3));

read more about this bad practice here

+0

不知道JavaScript字符串上的重複函數。這可能是更好的解決方案。但是爲什麼他們會要求在面試中重新實現一個已經存在的功能:D – user3691763

+0

呃,誰知道 - 他們可能只是想測試一下,如果你知道這個......但是正如上面所寫的和鏈接的,不要使用該模式位於String,Array等本機對象上... @ user3691763 – baao

0
String.prototype.repeatify = function(amount) 
{ 
    var endString = ""; 
    for(var i = 0; i < amount; ++i) 
    { 
    endString += this; 
    } 
    return endString; 
} 
0

只需修改字符串的原型對象:

String.prototype.repeatify = function (A) { 
    var i = 1; 
    var a = this; 
    while (i++ < A) { 
     a += this; 
    } 
    return a; 
} 

console.log('hello'.repeatify(3)); 
// outputs hellohellohello 

上有修改的內置對象的原型百感交集。我認爲這很好,這是一個不好的做法。我個人試圖避免它,並更喜歡定義一個獨立的函數來修改我沒有創建的東西的原型。

相關問題