V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
alexapollo
V2EX  ›  问与答

要怎么达到《精通 JavaScript》?

  •  
  •   alexapollo · 2014-03-21 20:15:03 +08:00 · 4499 次点击
    这是一个创建于 3688 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自己写网站有一段时间了,但感觉只会Jquery,而不懂JavaScript。
    到了需要《精通JavaScript》的时候了!

    我想要知道的几个点:
    1、书籍:书籍的推荐与筛选方法
    正在看 《JavaScript权威指南第六版》、《JavaScript语言精粹》
    2、社区:对学习比较有帮助的社区
    3、follow:哪些牛人值得follow
    4、汇聚:哪些站点常有干货,值得阅读
    5、guide:语言的入门tutorial,以及IDE推荐等等

    回答自由发散!
    37 条回复    1970-01-01 08:00:00 +08:00
    jakwings
        1
    jakwings  
       2014-03-21 21:11:04 +08:00   ❤️ 1
    上面列的点少了一个要点:练习写代码。其它都不及练习重要,按照自己的水平找一些别人写的东西研究研究,就可以边练习边借鉴了。
    其它感觉比较浮云,Google 一大把,等你水平提升了,自然就感觉到哪些东西是适合自己的了,根本不用别人去指点。
    zzNucker
        2
    zzNucker  
       2014-03-21 21:18:12 +08:00   ❤️ 1
    建议你别看那两本,先看《javascript高级程序设计》
    alexapollo
        3
    alexapollo  
    OP
       2014-03-21 21:25:26 +08:00
    @zzNucker 恩,是为什么呢?是不是和jakwings说的一样,写代码比较重要?这个我非常认同。
    @jakwings 同意。。你觉得有没有好的开源工程可以借鉴?
    zzNucker
        4
    zzNucker  
       2014-03-21 21:29:19 +08:00   ❤️ 1
    @alexapollo 因为这本书对你帮助更大,权威指南更像一本参考书,适合又有时候查阅。 语言精粹不适合打基础。
    inee
        5
    inee  
       2014-03-21 21:40:42 +08:00   ❤️ 1
    加入一些编程小组,定制一个共同任务

    或者两人比赛
    jakwings
        6
    jakwings  
       2014-03-21 21:46:50 +08:00   ❤️ 2
    @alexapollo 我认为循序渐进是最好的,什么「高级程序设计」都无法硬塞高级概念给你,除非你正在尝试设计要用到高级概念的程序,等你真的在设计高级程序时,自然会静下来看那本书的高级内容了。能用简单的方法解决的问题最好用简单的知识的解决,当遇到大规模的问题时,才用到大型架构的思想。当尝试过架构大型或高级的程序时,便会懂得以后是否应该让简单的程序变得不那么简单,为其增加可扩展性或稳定性。

    我曾经不断搜集网络资料,但是很多资料都被束之高阁,实在是浪费时间。现在我一般只为会不懂的问题去搜索资料,才不管那些资料以后还能不能找得到。

    我的最高水平只不过是写了个简单的博客系统(PHP 或 Javascript)。jQuery 会限制你的眼界,让你变得懒惰,不过 jQuery 本身就是一个很好的开源工程,你可以重点研究里面的一些网络请求相关的函数的实现,各种获取 CSS 数据的函数的原理(其实那些函数真的很有参考性质,以后要模拟时临时参考一下就好),另外看《如何做到 jQuery-free》:
    http://www.ruanyifeng.com/blog/2013/05/jquery-free.html )。
    跟 jQuery 差不多的函数库还有 Minified.js MooTools.js Zepto.js 等等,其中对于 DOM 元素的操作,还有计划任务队列操作,HTML 模板生成/应用函数,等函数,都值得参考。
    ivenvd
        7
    ivenvd  
       2014-03-21 21:48:31 +08:00   ❤️ 1
    书名号逼死强迫症,语文老师哭晕在厕所里。
    jsonline
        8
    jsonline  
       2014-03-21 21:51:25 +08:00 via Android   ❤️ 1
    你这书名号令人费解。去知乎上搜就知道了
    vilic
        9
    vilic  
       2014-03-21 21:51:43 +08:00   ❤️ 1
    <JavaScript 高级程序设计> 不错, 但是那只是相对高级一点的内容, 谈精通还差很多. 之前群里有个朋友, 是其他语言转过来的, 直接上标准, 这可能是比较快的精通语法的方式吧, 但也很枯燥, 反正我是没那个耐性的.
    但即便是精通了语法, 用法还需要时间的积累和感悟,,, 我不是善于读的书的人, 虽然也觉得读书有用, 但凡是到了最顶端, 资料可能就没那么丰富了.
    fox
        10
    fox  
       2014-03-21 21:55:39 +08:00   ❤️ 2
    先把标点符号用对。。。
    jakwings
        11
    jakwings  
       2014-03-21 21:55:46 +08:00   ❤️ 1
    @jakwings 上面扯的都是前端,因为后端的 Javascript 我还没什么经验。既然选择了 Javascript ,前端这么丰富的世界都学不好,后端那相对无聊一点的世界可能更学不好了。在前端可以学会驾驭各种复杂的界面和流程,也能学到很多的。后端可能就不单单是 Javascript 了,还有服务器……

    总之自己定/找个项目写代码吧,根据需求来选择要掌握的知识点。
    alexapollo
        12
    alexapollo  
    OP
       2014-03-21 21:56:06 +08:00
    @zzNucker 语言精粹前面有很多关于语法解析的内容,第三章的OO说的清楚,但是也很简略。
    确实比较适合先有几个JS项目的经验再看。
    看了下《javascript高级程序设计》,干货,各方各面都有写,不过页数有点多。。等我这两天先把精粹过完然后开始看
    alexapollo
        13
    alexapollo  
    OP
       2014-03-21 21:57:52 +08:00
    @inee 有道理!我是和另外一个哥们一起在写工程,他在看jquery,我在看js,准备过几天对一下。。
    alexapollo
        14
    alexapollo  
    OP
       2014-03-21 22:04:12 +08:00
    @jakwings 恩,前一段看到了 https://github.com/HubSpot/youmightnotneedjquery 这个项目,用JS实现jquery的所有功能,挺有意思的。
    现在学习只是为了对js有一个全局的了解,然后项目里用到的时候力争用O(1)的效率搞定。
    CSS selector挺感兴趣的,一直猜测是做了个全局hash或者树状结构。
    “计划任务队列操作,HTML 模板生成/应用函数” 这些都没了解过。

    有个比较想搞清楚的就是jquery里的ajax实现。
    Sivan
        15
    Sivan  
       2014-03-21 22:06:27 +08:00   ❤️ 1
    只想说犀牛书别看中文版
    alexapollo
        16
    alexapollo  
    OP
       2014-03-21 22:07:30 +08:00
    @vilic 恩,对。
    标准,优秀第三方库,最佳实践,都是目标。
    直接上标准可能得先背一段时间,不过我觉得方法也是靠谱的。。
    以前读过gcc和glibc,看的头晕眼花
    alexapollo
        17
    alexapollo  
    OP
       2014-03-21 22:08:32 +08:00
    @jakwings 咳咳,我懂后端,从内核到服务器,但是前端是小白啊
    alexapollo
        18
    alexapollo  
    OP
       2014-03-21 22:09:39 +08:00
    @ivenvd
    @jsonline
    @fox
    发帖的时候已经预料到了。。但转「」有点麻烦 哈哈~
    zzNucker
        19
    zzNucker  
       2014-03-21 22:09:59 +08:00   ❤️ 1
    别看标准啊,要看死人的。。
    alexapollo
        20
    alexapollo  
    OP
       2014-03-21 22:11:39 +08:00
    @Sivan why?
    alexapollo
        21
    alexapollo  
    OP
       2014-03-21 22:12:36 +08:00
    @zzNucker 又臭又长,而且一点意思都没有,跟数学论文差不多
    zzNucker
        22
    zzNucker  
       2014-03-21 22:15:59 +08:00   ❤️ 1
    我建议读完高级程序设计再去看库源代码,省掉很多力气。这本书很不错,反正我是耐心看完并且做了笔记的。过一遍书有个很大的好处:遇到问题会有很多思路,不会局限。网上搜索资料也会有的放矢。

    [CSS selector挺感兴趣的,一直猜测是做了个全局hash或者树状结构。]

    CSS选择器解析完了以后确实是用树来表示的,因为对应的元素基本都是树状结构。
    你可能对这篇文章比较感兴趣: http://kb.cnblogs.com/page/129756/
    jakwings
        23
    jakwings  
       2014-03-21 22:18:02 +08:00   ❤️ 1
    @alexapollo 我×,又是后端转前端的,给跪了……假如你还问这种问题,我只能猜你平时写的代码太简单了……
    jakwings
        24
    jakwings  
       2014-03-21 22:24:14 +08:00   ❤️ 1
    @alexapollo 既然如此,那就先看完 22 楼推荐的那本书吧……然后多搜索一下「JavaScript 陷阱」的文章。我就不信后端搞过了前端还会那么头疼……
    alexapollo
        25
    alexapollo  
    OP
       2014-03-21 22:53:05 +08:00
    @jakwings 不简单哈~ 内核什么很让人头疼的。不过搞全端开发只是个人爱好。
    问这个问题很正常吧,因为学习都是有最佳路径的,一个人摸索肯定比群策群力慢~
    alexapollo
        26
    alexapollo  
    OP
       2014-03-21 22:55:40 +08:00
    @zzNucker 没错,浏览器解析我得补下,收下!
    一个小问题:为什么chrome和firefox有那么多的代码量?都是哪些代码多?
    我一直感觉浏览器是个很轻的东西
    zzNucker
        27
    zzNucker  
       2014-03-21 23:20:09 +08:00   ❤️ 1
    @alexapollo 呃,就比如说webkit源代码就有很多模块啊消息模块,网络模块,进程/线程模块,渲染模块等等等等,然后各个模块里有一堆子模块,还有比如基本每个CSS规则都要有一个甚至多个文件来搞定。然后源代码库里还有各种平台的适配代码,还有各种功能的优化什么的也占了很多代码。 最开始代码量是没这么多的,最近越来越大了 - -。 日常用到的功能可能只占到了代码量的一小部分吧。
    alexapollo
        28
    alexapollo  
    OP
       2014-03-21 23:38:48 +08:00
    @zzNucker 你是研究浏览器的吗?
    我看你还是大学?
    advancedxy
        29
    advancedxy  
       2014-03-21 23:50:32 +08:00   ❤️ 1
    @alexapollo 他可是被称为菊苣的男人!!
    alexapollo
        30
    alexapollo  
    OP
       2014-03-22 00:06:50 +08:00
    @advancedxy what what..
    bzw875
        31
    bzw875  
       2014-03-22 10:38:10 +08:00   ❤️ 1
    我知道学习javascript时,过早的使用jquery不好,会变懒得思考。
    zoosucker
        32
    zoosucker  
       2014-03-22 11:06:43 +08:00   ❤️ 1
    我想知道,一个合格的前端需要把Javascript掌握到何种程度?
    sampeng
        33
    sampeng  
       2014-03-22 12:28:39 +08:00   ❤️ 1
    多写代码。没别的办法
    snoopy
        34
    snoopy  
       2014-03-22 12:45:53 +08:00   ❤️ 1
    把《JavaScript语言精粹》看懂你就迈入了精通的大门了。然后就要开始学习javascript的编程模式。建议看完《JavaScript语言精粹》一边做项目一边学习,并且多上网搜搜相关资料,多交流。另外《JavaScript权威指南》是常备书籍,有事没事多翻翻。

    楼主懂后端的话还可以研究研究Node.js。
    alexapollo
        35
    alexapollo  
    OP
       2014-03-22 15:06:55 +08:00
    @snoopy 恩,现在还很不理解JavaScript是什么类型的语言。
    基于原型继承的语言,函数式的面向对象语言?

    我是也准备看Node.js,不过估计要过一周才有空看~
    snoopy
        36
    snoopy  
       2014-03-23 12:46:10 +08:00
    看看这两篇文章可能对你理解javascript是什么样的语言,以及为什么这样设计有些帮助。

    http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html

    http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
    alexapollo
        37
    alexapollo  
    OP
       2014-03-23 13:54:57 +08:00
    @snoopy 好物!
    我觉得我得关注你。。。为啥你们都这么厉害捏~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4725 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 01:10 · PVG 09:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.