2

我正在尝试将下面的 jQuery 扩展转换为类似原型的扩展:

$.some = function(array, cmp_bool, context) {
    if (Array.prototype.some) {
        return array.some(cmp_bool, context);
    } else {
        if (context) {
            cmp_bool = $.proxy(cmp_bool, context);
        }
        return !!($.grep(array, cmp_bool).length)
    }
};
4

1 回答 1

1

PrototypeJS 已经将其内置到核心中。

Array 对象类型混合在 Enumerable 方法中 - 它具有具有some()完全相同参数的方法(没有数组作为第一个参数,因为您对 Array 实例进行操作)

所以鉴于这些

var testit = function(t){
    return t < 10;
}
var myArray = [1, 2, 3, 7, 10];

您提供的 jQuery 扩展是这样调用的

$.some(myArray,testit);
//or noConflict() mode
jQuery.some(myArray,testit);

并且像这样调用内置的 PrototypeJS 方法

myArray.some(testit);

** Enumerable 方法是此处链接 some()的方法的别名http://api.prototypejs.org/language/Enumerable/prototype/any/any()

于 2013-03-22T15:21:36.633 回答