jQueryは、そのコンストラクタが引数を受け入れる関数としてどのように機能するのか、そのコンストラクタは引数を受け入れる関数としても機能しますか?jQueryのプロトタイプとコンストラクタ関数の連鎖
JavaScriptについて少し慣れているので、これがノブの質問であれば私は言い訳をします(私はソースを見てきましたが、解剖しようとするのは難しいです)。
とにかく、例として$(document).ready(<args>);
コンストラクタ$()
とプロトタイプready()
の両方が機能します。どうやって?私はこのしようとするので:
var $ = function(selector) {
if(selector == document) {
return document;
}
};
$.prototype = {
constructor: $,
ready: function(args) {
if(isDomReady) {
args.apply(document);
} else {
window.onload = args;
}
}
};
var isDomReady = (document.addEventListener || document.readyState == ("complete"|"loaded"|true|4) || document.onreadystatechange()) ? true : false;
$(document).ready(function() { alert("Wibbles!") });
を私はエラーにキャッチされない例外TypeError取得:オブジェクトを[グローバルオブジェクト]は、それが機能連鎖と呼ばれるプログラミング技法だ
あなたは 'ready'から' this'を返すことでメソッドを連鎖させません。 –
エラーメッセージが表示される理由を知っています。 $(document)は.ready関数を持たないHTMLDocumentを返すだけです。 $がコンストラクタの実行時にドキュメント要素を格納した "element"プロパティを持っていれば、ready関数内の格納された要素にアクセスすることで準備状態を確認できます。 – MattDiamant
@MattDiamant Ahh ...私は勉強のためにそのコメントを数回読み返すだろうと思う。笑。しかし、私は理解していると思う。ありがとう。 –