我想写一个函数来重复一个函数x次。现在我想将重复的计数器传递为"this",但传递的值不是实数,它是一个包含"PrimitiveValue"的对象。
现场演示:http://jsfiddle.net/0Lda6qnp/
有没有办法将其设置为数字?func.apply( Number(i), args );不行。
repeat = function( count, func ) {
var args = [];
$.each( arguments, function( index, value ) {
if($.isNumeric(value)) {
args[args.length] = Number(value);
} else {
args[args.length] = value;
}
});
args = args.slice( 2 );
for( var i = 0; i < count; i++ ) {
func.apply( i, args );
}
};
我认为没有任何充分的理由将计数器传递为this
.只需将其作为参数传递即可。
您看到Number
对象的原因是,在草率模式下,所有this
值都隐式转换为对象。如果要避免这种情况,则需要对func
使用严格模式。
repeat( 3, function( a1, a2 ) {
"use strict";
$('#result').append( this + ' - type: ' + typeof this + ' - arguments: ' + a1 + ' ' + a2 + ' ' + '<br>' );
}, 1, 'Hallo');