.call/.apply 为此设置一个数字,而不是作为原始值
.call/.apply set a Number for this not as a Primitive Value
我想写一个函数来重复一个函数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');
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- 使用jQuery从原始页面内容创建iframe
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Javascript-格式化数字,始终显示原始的小数位数
- 如何在文档中查找数字并计算(更改原始数字)
- .call/.apply 为此设置一个数字,而不是作为原始值
- 对一串数字进行排序,每个数字里面都有一个字母.确保在原始数组中保持相同的重复项位置