3

animate()メソッドを少しいじってみました。

.animate( プロパティ [, 期間] [, イージング] [, 完了] )

すべての引数を JavaScript の関数に渡す必要がないことはわかっています。しかし、私が知りたいのはfunction(){ }、イージング文字列 (3:rd) ではなく、実際には 4:th パラメータであるコールバック関数を参照する jquery の方法です。

$('div').animate({ height: '10px' }, 100, function(){ });
4

6 に答える 6

3

タイプをチェックする単純なテストがあります:

ソースコードから(animate呼び出しspeed):

jQuery.speed = function( speed, easing, fn ) {
    var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
        complete: fn || !fn && easing ||
            jQuery.isFunction( speed ) && speed,
        duration: speed,
        easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
    };

...

isFunction: function( obj ) {
        return jQuery.type(obj) === "function";
    },

...

type: function( obj ) {
        return obj == null ?
            String( obj ) :
            class2type[ core_toString.call(obj) ] || "object";
    },

...

core_toString = Object.prototype.toString

...

jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
    class2type[ "[object " + name + "]" ] = name.toLowerCase();
});

したがって、基本的にはそれが であることを確認しObject.prototype.toString.call(fn)ます"[object Function]"

于 2012-10-05T13:23:39.500 に答える
1

JQuery はパラメーターのを調べて、easingパラメーターがstring型であるのに対し、完全なパラメーターはfunction型であることを確認します。

各パラメーターの型を調べるには、 .animate()の API を参照してください。

例:

function test(first, second, third) {
   if (typeof third == 'string') {
       //third is the easing function
   } else if (typeof third == 'function') {
       //third is the callback function
   }
}
于 2012-10-05T13:22:23.353 に答える
1

引数のtypeofと arguments.length を確認してください。

于 2012-10-05T13:22:46.903 に答える
1

パラメータの型を確認できました。

お気に入り:

if (typeof easing == 'function') {
  complete= easing;
  easing = 'some default value'; 
} else {
  // ...
}
于 2012-10-05T13:23:17.767 に答える
0

私の推測では、 typeof() を使用して param が関数であるかどうかを確認しますが、本当に知りたい場合は、ソースをチェックしてください: https://github.com/jquery/jquery

于 2012-10-05T13:23:09.730 に答える
0

おそらく:

function test(){};
typeof test // 'function'
于 2012-10-05T13:23:41.867 に答える