实例化

DrS*_*ove 2 javascript oop jquery

OOP通常需要实例化(在使用之前创建类的实例),如下所示:

var x = new String();
Run Code Online (Sandbox Code Playgroud)

在jQuery(和其他框架)中,我们可以使用没有实例化的对象,例如(没有'new'):

$('#myid').click(function(){
//code
});
Run Code Online (Sandbox Code Playgroud)

这是我的问题:框架作者如何制作它?如何在没有"新"实例化的情况下使框架可以使用?

提前致谢!!

Way*_*ett 5

最简单,最有用的答案(遗漏了很多关于JavaScript与基于类的语言的不同之处)创建一个新对象并从jQuery函数返回.

您将在jQuery源代码中看到的第一件事:

var jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它$只是jQuery以后在源代码中的别名:

// Expose jQuery to the global object
return (window.jQuery = window.$ = jQuery);
Run Code Online (Sandbox Code Playgroud)