私は、通常のjsオブジェクトでjQueryオブジェクトを頻繁に使用しています。必要に応じて、スクリプトで.callと.applyをより頻繁に利用する方法を見つけようとしています。私はコードをテストして、実際にどのように機能するかを確認してきました。
ただし、jQueryがあることがわかっているサイトのfirebugで以下のコード(基本的にはページ上のすべてのdivを非表示にするだけ)を実行すると、さまざまな結果が得られます。それがjQueryのバージョンなのか、それともこのコードが「バギー」なのか疑問に思っています。なぜ.callが常に機能するのかを理解する必要がありますが、.applyは、以下のコードに基づいて、その逆になるとは考えていません。
var myApp = {} // instantiate an empty objct
myApp.hide = function (whatever) {
that = whatever
$(that).hide()
}
var Numbers = function (object) {
this.object = object;
}
Numbers.prototype.div = $('div');
var numbers = new Numbers();
numbers.div
myApp.hide.call(numbers, numbers.div)
myApp.hide.apply(numbers, numbers.div)
.callまたは.applyを使用して上記のコードをファイアバグすると、サイトによって異なる結果が得られます。jquery .callがあるすべてのサイトは機能しますが、jQuery.comやtwitterなどの一部のサイトでは.applyと.callを使用して機能しますが、NewYorkTimesやNetflixなどの他のサイトでは.callのみが機能します。違いを引き起こしているjQueryですが、numbers.divは常にページ上のすべてのdiv要素の配列を返すため、少し混乱しています。これは常に機能すると思います。私はまだ.callと.applyの概念を理解しているので、どんな説明でもありがたいです-私は常にダグラス・クロックフォードの本を参照していますが、正直なところ、彼は.applyと.callについてあまり詳しく説明していません