这很简单。
当您更改prototype
某物的 (在本例中为默认String
类)时,您使该方法可用于该类的任何实例,在本例中可用于任何字符串。
现在让我们看看该方法的作用。
return new Array(num + 1).join(this);
因为String.prototype.displayDate = function(num) {
,该this
函数内部的值就是字符串的值。引用指向当前this
对象,我想这是有道理的。
然后它创建了一个由 num + 1 个元素组成的数组,这些元素都将使用undefined
. Array.prototype.join
返回数组元素的字符串表示形式,这些元素由您作为参数提供的事物分隔。
undefined
在这种情况下,您有一个 num +1值的数组。is的字符串表示形式undefined
,""
或空字符串。所以你最终得到 num + 1 个空字符串的串联 + 的值this
,或者num
乘以你的字符串。
假设您的字符串是“test”,然后您调用repeat(2)
.
它首先创建了a = new Array(undefined, undefined, undefined);
// 2 + 1 次。
然后它开始加入字符串,在每对之间放置“测试”。
new String(undefined) + new String("test") + new String(undefined); + new String("test") + new String(undefined)
上面变成:
"" + "test" + "" + "test" + "" = "testtest"// two times the original string.