js Date对象的扩展函数

日期 http://momentjs.com/

<script type="text/javascript">
Date.prototype.format = function(format) {
	var o = {
		"M+": this.getMonth() + 1,
		//month
		"d+": this.getDate(),
		//day
		"h+": this.getHours(),
		//hour
		"m+": this.getMinutes(),
		//minute
		"s+": this.getSeconds(),
		//second
		"q+": Math.floor((this.getMonth() + 3) / 3),
		//quarter
		"S": this.getMilliseconds() //millisecond
	}
	if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	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(date){
	return Math.ceil((this - date) / (1000 * 60 * 60 * 24));
}

// 日期加减计算
Date.prototype.add = function(days){
	return new Date(this.getTime() + days * (1000 * 60 * 60 * 24));
}

// 日期加减计算
Date.prototype.addMonth = function(months){
	var day = this.getDate();
	var month = this.getMonth() + 1;
	var year = this.getFullYear();
	month += months;
	if(month > 12){
		year += Math.floor(month / 12);
		month = month % 12;
	}
	return Date.parse(month + '/' + day + '/' + year);
}
var ddd = new Date();
document.write(ddd.format('yyyy-MM-dd'));
</script>
 

对象

Object.prototype.clone = function()
{
	if(typeof(this) != "object")
		return this;

	var $cloneDepth = (arguments.length >= 1) ? ((isNaN(parseInt(arguments[0]))) ? null : parseInt(arguments[0])) : null;
	if($cloneDepth)
		$cloneDepth = ($cloneDepth <= 0) ? null : $cloneDepth;

	var $cloneObject = null;
	var $thisConstructor = this.constructor;
	var $thisConstructorPrototype = $thisConstructor.prototype;

	if($thisConstructor == Array)
		$cloneObject = new Array();
	else if($thisConstructor == Object)
		$cloneObject = new Object();
	else
	{
		try
		{
			$cloneObject = new $thisConstructor;
		}
		catch(e)
		{
			$cloneObject = new Object();
			$cloneObject.constructor = $thisConstructor;
			$cloneObject.prototype = $thisConstructorPrototype;
		}
	}

	var $propertyName = "";
	var $newObject = null;

	for($propertyName in this)
	{
		$newObject = this[$propertyName];

		if(!$thisConstructorPrototype[$propertyName])
		{
			if(typeof($newObject) == "object")
			{
				if($newObject === null)
					$cloneObject[$propertyName] = null;
				else
				{
					if($cloneDepth)
					{
						if($cloneDepth == 1)
							$cloneObject[$propertyName] = $newObject;
						else
							$cloneObject[$propertyName] = $newObject.clone(--$cloneDepth);
					}
					else
						$cloneObject[$propertyName] = $newObject.clone();
				}
			}
			else
				$cloneObject[$propertyName] = $newObject;
		}
	}

	return $cloneObject;
}

ss

你可能感兴趣的:(prototype)