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 に答える