面试题 002 - xmfenbei/study-javascript GitHub Wiki

问题:

String对象定义一个repeatify方法。该方法接收一个整型参数,作为字符串重复的次数,最后返回重复指定次数的字符串。例如:

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

输出应该是:hellohellohello.

答案:

String.prototype.repeatify = String.prototype.repeatify || function(times) {
    var str = '';
    
    for (var i = 0; i < times; i++) {
        str += this;
    }
    
    return str;
};

解析:

这题检验开发者对JavaScript的继承及原型属性的知识,同时也检验了开发者是否能扩展内置数据类型的方法。

这里的另一个关键点是,看你怎样避免重写可能已经定义了的方法。这可以通过在定义自己的方法之前,检测方法是否已经存在。

String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};

当你被问起去扩展一个JavaScript方法时,这个技术非常有用。