请问js加载文档的区别

请教js加载文档的区别?
一、
    <script>
        $(function () {
            //我理解这里是下载完毕dom,不管css、图片等是否下载完。
        });
    </script>
     
二、
<script>
    document.onreadystatechange = function () {
        if (document.readyState == "complete") {
            //我不知道这个和一、三的区别。
        }
    }
</script>
 
三、
<script>
    window.onload = function () {
        //我理解这里是下载完毕dom、css、图片等各种文档。
    };
</script>


请问这三种加载文档的区别? 
------解决方案--------------------
第一个是写在哪就在那执行,不一定下载完dom
------解决方案--------------------
$(function () {
            //我理解这里是下载完毕dom,不管css、图片等是否下载完。
        });
这个的实现是通过domcontentloaded、onreadystatechange、同时还要解决ie的hack方案综合实现的

所以第二种其实是第一种内部针对特定浏览器的实现方法
------解决方案--------------------
个人认为 document.readyState == "complete" 与 window.onload 效果差不多的,但是 document.readyState 有 5 种不同的状态,这个得从应用的角度出发吧?请问js加载文档的区别
window.onload和$(document).ready()页面加载的区别