mozilla
您的搜索结果

    String.prototype.repeat

    该特性处于 ECMAScript 6 规范草案中,目前的实现在未来可能会发生微调,请谨慎使用。

    概述

    repeat() 构造并返回一个重复当前字符串若干次数的新字符串.

    语法

    var newString = string.repeat(count);

    参数

    count
    介于0和正无穷大之间的整数 : [0, +∞) 。表示在新构造的字符串中重复了多少遍原字符串。

    示例

    "abc".repeat(-1)     // RangeError: repeat count must be positive and less than inifinity
    "abc".repeat(0)      // ""
    "abc".repeat(1)      // "abc"
    "abc".repeat(2)      // "abcabc"
    "abc".repeat(3.5)    // "abcabcabc" 参数count将会被自动转换成整数.
    "abc".repeat(1/0)    // RangeError: repeat count must be positive and less than inifinity
    
    ({toString : () => "abc", repeat : String.prototype.repeat}).repeat(2)    //"abcabc",repeat是一个通用方法,也就是它的调用者可以不是一个字符串对象.

    Polyfill

    该方法是 ECMAScrip 6 添加的,当前可能尚有 JavaScript 的实现不支持该方法。你可以使用如下的 polyfill :

    if (!String.prototype.repeat) {
      String.prototype.repeat = function(count) {
        'use strict';
        if (this == null) {
          throw new TypeError('can\'t convert ' + this + ' to object');
        }
        var str = '' + this;
        count = +count;
        if (count != count) {
          count = 0;
        }
        if (count < 0) {
          throw new RangeError('repeat count must be non-negative');
        }
        if (count == Infinity) {
          throw new RangeError('repeat count must be less than infinity');
        }
        count = Math.floor(count);
        if (str.length == 0 || count == 0) {
          return '';
        }
        // 确保 count 是一个 31 位的整数。这样我们就可以使用如下优化的算法。
        // 当前(2014年8月),绝大多数浏览器都不能支持 1 << 28 长的字符串,所以:
        if (str.length * count >= 1 << 28) {
          throw new RangeError('repeat count must not overflow maximum string size');
        }
        var rpt = '';
        for (;;) {
          if ((count & 1) == 1) {
            rpt += str;
          }
          count >>>= 1;
          if (count == 0) {
            break;
          }
          str += str;
        }
        return rpt;
      }
    }

    规范

    Specification Status Comment
    ECMAScript 6 (ECMA-262)
    String.prototype.repeat
    Draft Initial definition.

     

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support 41  24 (24) 未实现 未实现 未实现
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support 未实现 36 (behind a flag) 24.0 (24) 未实现 未实现 未实现

     

    文档标签和贡献者

    此页面的贡献者有: ziyunfei, teoli, tiansh, zhangyaochun1987
    最后编辑者: tiansh,