Example analysis of the JS extended method


This article provides an example of how to implement the JS extension method. Share with you for your reference. The specific analysis is as follows:

The JS extension method is very similar to the C# extension method, and can be chain-called by writing an extension to a class. This is very handy, and it would be interesting to write js later if you were to refer to a prewritten method in an js.

Here is an example:

<head>
  <title> test JS Extension methods </title>
  <script type="text/javascript">
   //  Merge multiple whitespace as 1 A blank
   String.prototype.ResetBlank = function() { // Extending a string
   var regEx = /\s+/g;
   return this.replace(regEx, ' ');
   };
   window.onload = function()
   {
   var str = " you    Is he ok after he thinks ?";
   alert(str);
   str = str.ResetBlank(); // So I'm going to be able to call alpha and beta C# Very like !
   alert(str);
   }
  </script>
</head>

It’s like telling yourself you have one of these things;

Here’s a great js extension to find:

//  Clear the Spaces on both sides
String.prototype.trim = function() {
  return this.replace(/(^\s*)|(\s*$)/g, '');
};
//  Merge multiple whitespace as 1 A blank
String.prototype.ResetBlank = function() {
  var regEx = /\s+/g;
  return this.replace(regEx, ' ');
};

//  Keep digital
String.prototype.GetNum = function() {
  var regEx = /[^\d]/g;
  return this.replace(regEx, '');
};

//  Keep Chinese
String.prototype.GetCN = function() {
  var regEx = /[^\u4e00-\u9fa5\uf900-\ufa2d]/g;
  return this.replace(regEx, '');
};

// String into Number
String.prototype.ToInt = function() {
  return isNaN(parseInt(this)) ? this.toString() : parseInt(this);
};

//  You get the length of bytes
String.prototype.GetLen = function() {
  var regEx = /^[\u4e00-\u9fa5\uf900-\ufa2d]+$/;
  if (regEx.test(this)) {
   return this.length * 2;
  } else {
   var oMatches = this.match(/[\x00-\xff]/g);
   var oLength = this.length * 2 - oMatches.length;
   return oLength;
  }
};

//  Get the full name of the file
String.prototype.GetFileName = function() {
  var regEx = /^.*\/([^\/\?]*).*$/;
  return this.replace(regEx, '$1');
};

//  Gets the file extension
String.prototype.GetExtensionName = function() {
  var regEx = /^.*\/[^\/]*(\.[^\.\?]*).*$/;
  return this.replace(regEx, '$1');
};

// Replace all
String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase)
{
  if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
   return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi" : "g")), replaceWith);
  } else {
   return this.replace(reallyDo, replaceWith);
  }
};
// Formatted string  add By  Jing-ning liu  2010-12-09
String.Format = function() {
  if (arguments.length == 0) {
   return '';
  }

  if (arguments.length == 1) {
   return arguments[0];
  }

  var reg = /{(\d+)?}/g;
  var args = arguments;
  var result = arguments[0].replace(reg, function($0, $1) {
   return args[parseInt($1) + 1];
  });
  return result;
};

//  Digital zero padding
Number.prototype.LenWithZero = function(oCount) {
  var strText = this.toString();
  while (strText.length < oCount) {
   strText = '0' + strText;
  }
  return strText;
};

// Unicode reduction
Number.prototype.ChrW = function() {
  return String.fromCharCode(this);
};

//  Arrays of Numbers are sorted from small to large
Array.prototype.Min2Max = function() {
  var oValue;
  for (var i = 0; i < this.length; i++) {
   for (var j = 0; j <= i; j++) {
   if (this[i] < this[j]) {
    oValue = this[i];
    this[i] = this[j];
    this[j] = oValue;
   }
   }
  }
  return this;
};

//  Arrays of Numbers are sorted from large to small
Array.prototype.Max2Min = function() {
  var oValue;
  for (var i = 0; i < this.length; i++) {
   for (var j = 0; j <= i; j++) {
   if (this[i] > this[j]) {
    oValue = this[i];
    this[i] = this[j];
    this[j] = oValue;
   }
   }
  }
  return this;
};

//  Gets the largest item in an array of Numbers
Array.prototype.GetMax = function() {
  var oValue = 0;
  for (var i = 0; i < this.length; i++) {
   if (this[i] > oValue) {
   oValue = this[i];
   }
  }
  return oValue;
};

//  Gets the smallest item in an array of Numbers
Array.prototype.GetMin = function() {
  var oValue = 0;
  for (var i = 0; i < this.length; i++) {
   if (this[i] < oValue) {
   oValue = this[i];
   }
  }
  return oValue;
};

//  Gets the Chinese version of the current time
Date.prototype.GetCNDate = function() {
  var oDateText = '';
  oDateText += this.getFullYear().LenWithZero(4) + new Number(24180).ChrW();
  oDateText += this.getMonth().LenWithZero(2) + new Number(26376).ChrW();
  oDateText += this.getDate().LenWithZero(2) + new Number(26085).ChrW();
  oDateText += this.getHours().LenWithZero(2) + new Number(26102).ChrW();
  oDateText += this.getMinutes().LenWithZero(2) + new Number(20998).ChrW();
  oDateText += this.getSeconds().LenWithZero(2) + new Number(31186).ChrW();
  oDateText += new Number(32).ChrW() + new Number(32).ChrW() + new Number(26143).ChrW() + new Number(26399).ChrW() + new String('26085199682010819977222352011620845').substr(this.getDay() * 5, 5).ToInt().ChrW();
  return oDateText;
};
// extension Date formatting
Date.prototype.Format = function(format) {
  var o = {
   "M+": this.getMonth() + 1, // in
   "d+": this.getDate(), // day
   "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // hours
   "H+": this.getHours(), // hours
   "m+": this.getMinutes(), // points
   "s+": this.getSeconds(), // seconds
   "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
   "S": this.getMilliseconds() // ms
  };
  var week = {
   "0": "\u65e5",
   "1": "\u4e00",
   "2": "\u4e8c",
   "3": "\u4e09",
   "4": "\u56db",
   "5": "\u4e94",
   "6": "\u516d"
  };
  if (/(y+)/.test(format)) {
   format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  }
  if (/(E+)/.test(format)) {
   format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
  }
  for (var k in o) {
   if (new RegExp("(" + k + ")").test(format)) {
   format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
   }
  }
  return format;
}
Date.prototype.Diff = function(interval, objDate) {
  // If the parameter is insufficient or  objDate  Not a date type  undefined
  if (arguments.length < 2 || objDate.constructor != Date) { return undefined; }
  switch (interval) {
   // Estimated seconds,
   case 's': return parseInt((objDate - this) / 1000);
   // Calculate the gap
   case 'n': return parseInt((objDate - this) / 60000);
   // Poor computing �
   case 'h': return parseInt((objDate - this) / 3600000);
   // Poor calculation,
   case 'd': return parseInt((objDate - this) / 86400000);
   // Estimated weeks,
   case 'w': return parseInt((objDate - this) / (86400000 * 7));
   // Calculate month less
   case 'm': return (objDate.getMonth() + 1) + ((objDate.getFullYear() - this.getFullYear()) * 12) - (this.getMonth() + 1);
   // Calculation in poor
   case 'y': return objDate.getFullYear() - this.getFullYear();
   // Input is wrong
   default: return undefined;
  }
};

// Check if it is empty
Object.prototype.IsNullOrEmpty = function() {
var obj = this;
var flag = false;
if (obj == null || obj == undefined || typeof (obj) == 'undefined' || obj == '') {
   flag = true;
} else if (typeof (obj) == 'string') {
   obj = obj.trim();
   if (obj == '') {// Is empty
   flag = true;
   } else {// Don't empty
   obj = obj.toUpperCase();
   if (obj == 'NULL' || obj == 'UNDEFINED' || obj == '{}') {
    flag = true;
   }
   }
}
else {
   flag = false;
}
return flag;

I hope this article is helpful for you to design javascript program.