2014-12-03 79 views
1

我想打印一個字符串,例如: blah 3次,但我想鏈接該函數的字符串。將函數鏈接到要打印的字符串

我現在就做,像這樣:

function repeatMe(number) { 
    for (var i = 0; i < number; i++) { 
      document.write('blah'); 
    } 
} 

console.log(repeatMe(3)); 

但它有可能調用函數打印blah像這樣:

console.log('blah'.repeatMe(3)); 
+2

注意'repeatMe'應*返回一個字符串*,不打印。該函數不被稱爲'printMeTimes'左右。你想叫它像'document.write(repeatMe('blah',3))',*或*'console.log',或者... – Bergi 2014-12-03 11:46:20

+0

不要使用'document.write'。 – Andy 2014-12-03 11:48:19

回答

2

返回加入repeatMe字符串原型一個連接字符串:

String.prototype.repeatMe = function (number) { 
    var txt = ''; 
    for (var i = 0; i < number; i++) { 
    txt += this; 
    } 
    return txt; 
} 

var div = document.querySelector('#id'); 
div.innerHTML = 'blah'.repeatMe(3); 

或者:

console.log('blah'.repeatMe(3)); 

DEMO

2

當然,你就必須把它添加到字符串類型:

String.prototype.repeatMe = function (number) { 
    for (var i = 0; i < number; i++) { 
    document.write(this); 
    } 
}; 

"blah".repeatMe(4); 
+0

謝謝,我將如何使它顯示blahblahblah在控制檯,而不是打印到文檔?我用return來替換document.write(this),但那不起作用。 – 2014-12-03 11:52:55

+0

你可以在for循環裏面添加一行,說''''console.log(this);''' – justinpinili 2014-12-03 11:56:36

+0

如果我這樣做,然後通過console.log調用函數,我得到字符串對象的內容而不是印刷blahblahblah。 – 2014-12-03 11:57:53

1

可以通過添加到字符串原型鏈來做到這一點。由於"blah"是一個字符串,因此您需要將其添加到字符串的原型鏈中。

解決方案:

String.prototype.repeatMe = function (number) { 
    for (var i = 0; i < number; i++) { 
      document.write(this); 
    } 
} 

console.log('blah'.repeatMe(3)); 
0

簡易型重複的字符串:使用Array並用字符串加入

要重複函數執行:看代碼片段

String.prototype.repeat = function (n) { return Array(n + 1).join(this); }; 
 
Function.prototype.repeat = function (n) { 
 
    n -= 1; 
 
    if (n > 0) { this(); return this.repeat(n); } 
 
    return this(); 
 
}; 
 

 
var result = document.querySelector('#result'); 
 
var bar = function() { result.innerHTML += '<br>bar' }; 
 
result.innerHTML = 'foo'.repeat(5); 
 
bar.repeat(5);
<div id="result"></div>