2014-12-03 43 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>