/*
    Author: YeHong Du
    CreateAt: 2018-1-3
*/

(function() {
    /* String */
    if (!String.prototype.trim) {
        String.prototype.trim = function () {
          return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
        };
      }
})();
@@ -248,13 +248,2014 @@
     
-  %7D%0A%7D)();
+%7D%0A%09%0A%09// Production steps of ECMA-262, Edition 5, 15.4.4.14%0A%09// Reference: http://es5.github.io/#x15.4.4.14%0A%09if (!Array.prototype.indexOf) %7B%0A%09  Array.prototype.indexOf = function(searchElement, fromIndex) %7B%0A%09%0A%09    var k;%0A%09%0A%09    // 1. Let O be the result of calling ToObject passing%0A%09    //    the this value as the argument.%0A%09    if (this == null) %7B%0A%09      throw new TypeError('%22this%22 is null or not defined');%0A%09    %7D%0A%09%0A%09    var O = Object(this);%0A%09%0A%09    // 2. Let lenValue be the result of calling the Get%0A%09    //    internal method of O with the argument %22length%22.%0A%09    // 3. Let len be ToUint32(lenValue).%0A%09    var len = O.length %3E%3E%3E 0;%0A%09%0A%09    // 4. If len is 0, return -1.%0A%09    if (len === 0) %7B%0A%09      return -1;%0A%09    %7D%0A%09%0A%09    // 5. If argument fromIndex was passed let n be%0A%09    //    ToInteger(fromIndex); else let n be 0.%0A%09    var n = +fromIndex %7C%7C 0;%0A%09%0A%09    if (Math.abs(n) === Infinity) %7B%0A%09      n = 0;%0A%09    %7D%0A%09%0A%09    // 6. If n %3E= len, return -1.%0A%09    if (n %3E= len) %7B%0A%09      return -1;%0A%09    %7D%0A%09%0A%09    // 7. If n %3E= 0, then Let k be n.%0A%09    // 8. Else, n%3C0, Let k be len - abs(n).%0A%09    //    If k is less than 0, then let k be 0.%0A%09    k = Math.max(n %3E= 0 ? n : len - Math.abs(n), 0);%0A%09%0A%09    // 9. Repeat, while k %3C len%0A%09    while (k %3C len) %7B%0A%09      // a. Let Pk be ToString(k).%0A%09      //   This is implicit for LHS operands of the in operator%0A%09      // b. Let kPresent be the result of calling the%0A%09      //    HasProperty internal method of O with argument Pk.%0A%09      //   This step can be combined with c%0A%09      // c. If kPresent is true, then%0A%09      //    i.  Let elementK be the result of calling the Get%0A%09      //        internal method of O with the argument ToString(k).%0A%09      //   ii.  Let same be the result of applying the%0A%09      //        Strict Equality Comparison Algorithm to%0A%09      //        searchElement and elementK.%0A%09      //  iii.  If same is true, return k.%0A%09      if (k in O && O%5Bk%5D === searchElement) %7B%0A%09        return k;%0A%09      %7D%0A%09      k++;%0A%09    %7D%0A%09    return -1;%0A%09  %7D;%0A%09%7D%0A%7D)();%0A

add indexOf()