【发布时间】:2013-03-09 04:44:08
【问题描述】:
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!") });
我得到一个错误 Uncaught TypeError: Object[object global] has no method 'ready'
【问题讨论】:
-
您不会通过从
ready返回this来链接方法。 -
我知道您收到错误消息的原因。 $(document) 只是返回 HTMLDocument,它没有 .ready 函数。如果 $ 有一个“元素”属性,它在您运行构造函数时存储了文档元素,那么您可以通过访问准备函数中存储的元素来检查它的就绪状态。
-
@MattDiamant 啊...我想我会重新阅读该评论几次以进行研究。哈哈。但我想我明白了。谢谢。
-
基本上所有方法都返回调用它们的对象。
标签: javascript jquery object prototype