javascript - 在其他对象上使用 native 数组原型(prototype)方法有风险吗?

标签 javascript jquery arrays native function-prototypes

我已经制作了很多 jQuery 特殊事件,现在我正在尝试将它们制作为 jQuery 插件。

我的代码是:

$.each("down move hold up tap swipeUp swipeDown swipeLeft swipeRight drag dragCell".split(" "), function(key, value) {
    $.fn[value] = function() {
        var args = [value].concat(Array.prototype.splice.call(arguments,0));
        if ( $.isFunction(arguments[0]) || $.isFunction(arguments[1]) ) {
            return this.bind.apply(this, args);
        } else {
            return this.trigger.apply(this, args);
        }
    };
});

我循环名称数组(向下、移动、按住、向上等)并动态创建 jQuery 插件。

正如您所看到的,获取该值并以其后命名插件:$.fn.down$.fn.move 等。

然后我获取参数并通过 native 数组方法循环它。

Array.prototype.splice.call(arguments, 0);

这将返回一个 native 数组[arguments[0],arguments[1],...]

并将其与连接起来,最终得到:

["down", arguments[0], arguments[1], ...],
["move", arguments[0], arguments[1], ...],
....

这样做是否有任何风险(使用 native 方法和其他对象),是否有丢失数据的可能性?

如您所见,它与 jQuery 的 bindtrigger 方法混淆。这也危险吗?

最佳答案

好吧,我结束这个问题:实现相同参数的方法是:

感谢raynos

var toArray = function (obj) {
  var ret = new Array(obj.length);
  for (var i = 0, len = obj.length; i < len; i++) {
    ret[i] = obj[i];
  }
  return ret;
}

toArray(arguments);

关于javascript - 在其他对象上使用 native 数组原型(prototype)方法有风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648575/

相关文章:

javascript - jQuery 插件 - 高亮文本

javascript - 使用 D3 问题的多线图

jquery mobile手动调用页面插件

javascript - 打字机追加淡入

ios - 从列表中选择随机数量的项目并将它们添加到另一个列表(Swift)

javascript - 如何在不提交表单的情况下使用 jQuery.validate?

javascript - 通过 ng-repeat 的 Angular 多重过滤器

javascript - 通过javaScript为div添加背景颜色

php - HTML POST 上的 htmlspecialchar 到带有数组和单个输入的 PHP 脚本

java - 从 ArrayList 检索 2D 数组的问题