20 lines
		
	
	
		
			614 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			614 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var isFunction     = require("../../function/is-function")
 | |
|   , slice          = Array.prototype.slice
 | |
|   , defineProperty = Object.defineProperty
 | |
|   , desc           = { configurable: true, enumerable: true, writable: true, value: null };
 | |
| 
 | |
| module.exports = function (/* …items*/) {
 | |
| 	var result, i, length;
 | |
| 	if (!this || this === Array || !isFunction(this)) return slice.call(arguments);
 | |
| 	result = new this((length = arguments.length));
 | |
| 	for (i = 0; i < length; ++i) {
 | |
| 		desc.value = arguments[i];
 | |
| 		defineProperty(result, i, desc);
 | |
| 	}
 | |
| 	desc.value = null;
 | |
| 	result.length = length;
 | |
| 	return result;
 | |
| };
 |