jQuery中有一个名为makeArray的函数,它能够将类数组对象转化为真正的JavaScript数组。那么它的实现原理是什么呢?我们来看一下makeArray的源码。
jQuery.makeArray = function(arr, results) { var ret = results || []; if (arr != null) { if (isArraylike(Object(arr))) { jQuery.merge(ret, typeof arr === "string" ? [arr] : arr ); } else { push.call(ret, arr); } } return ret; };
在源码中,我们可以看到makeArray接受两个参数,第一个为需要被转化为数组的对象,第二个为可选参数,表示将结果存入该数组中。
在函数内部,它首先会判断arr是否为null,如果不为null,则会判断它是否为类数组对象。这里我们看到一个isArraylike函数,它用来判断一个对象是否为类数组对象。如果是,就将它转化为真正的数组。如果不是,则直接将它当做元素push到结果数组中。
最后,makeArray返回一个结果数组,该数组就是转化后的真正的JavaScript数组。