Archive for 六月 22nd, 2010

【转】New MooTools Methods: .from()

22 6月
Full David Walsh Blog Post: New MooTools Methods: .from() MooTools 1.3 beta 2 was recently released and you may see a few new methods implemented to String, Array, Number, and Function: from. The from method of each of those Types returns an object of that type. Simply put: you’ll always receive back an object of that type based on what you give it.

The New Method Code

Function.from = function(item){
	return (typeOf(item) == 'function') ? item : function(){
		return item;

Array.from = function(item){
	if (item == null) return [];
	return (Type.isEnumerable(item) && typeof item != 'string') ? (typeOf(item) == 'array') ? item : : [item];

Number.from = function(item){
	var number = parseFloat(item);
	return isFinite(number) ? number : null;

String.from = function(item){
	return item + '';
The from method is added to String, Array, Number, and Function natives. Enough with the underlying code though — examples are easier to understand.

Function.from, Array.from, Number.from, String.from Examples

//returns ['Item'] (array type)

Function.from('Item, Whoa, Hey');
//returns function() { return 'Item, Whoa', Hey'; } (function type)

String.from(function() { alert('MooTools FTW!'); });
//returns function () { alert("MooTools FTW!"); } (string type)

//returns 8765309 (number type)
Each example above shows you what’s returned by each method. Being able to generate a given object type from any argument using from can save you a lot of time — especially when a given MooTools class or method requires an argument of a specific type. from is just another example of how MooTools can make your JavaScript life easier!