纠结了很久,this为什么能输出[],还以为jquery做了什么初始化操作,结果找源码怎么找都找不到,最后在http://segmentfault.com/q/1010000000611454找到了解释
这个其实不难,典型的 Ducking Type 应用。一个 Javascript 对象,只要定义了 length
属性和 splice
方法,它看起来就像一个数组。例如:
var x = { '0': 'foo', '1': 'bar', length: 2, splice: function () {} }; console.log(x); // ["foo", "bar", splice: function]
jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function( selector, context, rootjQuery ) { var match, elem, ret, doc; // Handle $(""), $(null), $(undefined), $(false) if ( !selector ) { debugger return this; }
继续看源码,我要患上巨菜症。。。