V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
pinkman
V2EX  ›  JavaScript

请教如何系统的学习下JavaScript,大学时候选修课学习过编程,虽然毕业后没有进入这行但感觉基本的概念自己还是了解的,平日也会点基础的Python,但看到JS完全傻眼了...

  •  
  •   pinkman · 2013-06-08 00:13:05 +08:00 · 5169 次点击
    这是一个创建于 4194 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想实现一个鼠标滑倒特定位置显示悬浮窗口的效果,网上搜了下,搜到一个范例脚本完全看傻眼了...

    var tip={$:function(ele){
    if(typeof(ele)=="object")
    return ele;
    else if(typeof(ele)=="string"||typeof(ele)=="number")
    return document.getElementById(ele.toString());
    return null;
    },

    这事所谓的匿名函数吧?嵌套起来太难看懂了...一个接一个...


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>鼠标跟随提示框</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
    <style type="text/css">
    body{font:12px/1.8 arial;}
    a,a:visited{color:#3366cc;text-decoration:none;}
    a:hover{color:#f60;text-decoration:underline;}
    .tip{width:200px;border:2px solid #ddd;padding:8px;background:#f1f1f1;color:#666;}
    img{border:none;}
    </style>
    <script type="text/javascript">
    var tip={$:function(ele){
    if(typeof(ele)=="object")
    return ele;
    else if(typeof(ele)=="string"||typeof(ele)=="number")
    return document.getElementById(ele.toString());
    return null;
    },
    mousePos:function(e){
    var x,y;
    var e = e||window.event;
    return{x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,
    y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop};
    },
    start:function(obj){
    var self = this;
    var t = self.$("mjs:tip");
    obj.onmousemove=function(e){
    var mouse = self.mousePos(e);
    t.style.left = mouse.x + 10 + 'px';
    t.style.top = mouse.y + 10 + 'px';
    t.innerHTML = obj.getAttribute("tips");
    t.style.display = '';
    };
    obj.onmouseout=function(){
    t.style.display = 'none';
    };
    }
    }
    </script>
    </head>
    <body>
    <a href="#" title="liehuo.net" target="_blank"><img src="http://www.veryhuo.com/liehuo.net/images/liehuo2009/logo.gif" title="liehuo.net" onmouseover="tip.start(this)" tips="显示文本" /></a>
    <br /><br />
    <a href="#" title="liehuo.net" target="_blank" onmouseover="tip.start(this)" tips="显示文本</a>
    <div id="mjs:tip" class="tip" style="position:absolute;left:0;top:0;display:none;"></div>
    </body>
    </html>
    16 条回复    1970-01-01 08:00:00 +08:00
    zpd
        1
    zpd  
       2013-06-08 00:25:22 +08:00   ❤️ 1
    exoticknight
        2
    exoticknight  
       2013-06-08 00:57:54 +08:00   ❤️ 1
    看起来还好吧……
    一开始贴出来那个$的函数只是取DOM对象……
    先去w3c看入门的吧
    ETiV
        3
    ETiV  
       2013-06-08 00:58:06 +08:00   ❤️ 1
    建议还是从单纯的JS开始学吧.
    你这个是混入了HTML DOM了, 什么style啊, mouseevent之类的. 所以看上去很杂乱.
    exoticknight
        4
    exoticknight  
       2013-06-08 01:00:05 +08:00   ❤️ 1
    还有你说的那个不是匿名函数,是一个函数名是$的函数。
    这样定义:
    var tip {
    $:function() {}
    }
    就可以用tip.$()来调用这个函数
    PrideChung
        5
    PrideChung  
       2013-06-08 01:09:03 +08:00   ❤️ 1
    我推荐tutsplus的这个视频:
    JavaScript零基础入门。
    http://net.tutsplus.com/tutorials/javascript-ajax/javascript-from-null-video-series/

    主讲是tutsplus的明星主讲Jeffrey Way,视频是2010年的了,不过语言的基础还是一样,大概闭包那段会杀死不少脑细胞吧,还有什么“立刻执行的闭包”……
    cauliturtle
        6
    cauliturtle  
       2013-06-08 01:49:28 +08:00   ❤️ 1
    @PrideChung 講起作者,一定去Youtube看遍Douglas Crockford的演講。作為一定javascript前端和後端的開發者,都一定受用
    blacktulip
        7
    blacktulip  
       2013-06-08 03:57:36 +08:00   ❤️ 1
    pinkman
        8
    pinkman  
    OP
       2013-06-08 12:25:03 +08:00
    感谢大家, 都已给出感谢了~
    gdzdb
        9
    gdzdb  
       2013-06-08 16:36:55 +08:00
    分享我当时是怎么学的,不一定适合所有人。

    买一本《javascript高级程序编程》或犀牛书,当时是第二版,只看语法那几节。
    然后就开始自己瞎折腾,从基础的加减乘除到后面的各种数据处理,完成一个简单功能后,再给自己加难题,解决再加,不懂就拿那本书起来翻。

    然后就可以开始看别人的代码了,拆解分析流程原理,理解关键点在哪里,然后,然后你已经知道怎么学下去了。

    @Fenng 也说过,技术书不建议从头一节节看,这样会失去学习的乐趣,而且容易晕。
    bengol
        10
    bengol  
       2013-06-08 23:09:04 +08:00
    javascript一直学不会哎,每次看到语法那儿就晕了
    xiaogui
        11
    xiaogui  
       2013-06-09 10:49:46 +08:00
    第一段看着明显没什么压力呀
    i18n
        12
    i18n  
       2013-06-09 18:47:57 +08:00 via iPhone
    不错的经验
    FrankFang128
        13
    FrankFang128  
       2013-06-09 19:18:24 +08:00
    不要觉得嵌套函数难看,那是JS的精髓之一——函数式编程。
    DaniloSam
        14
    DaniloSam  
       2013-06-09 20:41:18 +08:00
    写这代码的脑袋让驴踢了。。。

    不要去google代码来看,尤其国内的,没用

    先去w3c看一些基本的东西,了解一下这个语言,然后学学jQuery的使用,做点小东西热热身

    多逛逛,github,看各种jQuery插件源码是个入门的好东西

    在之后就是实现具体的业务,总结出属于自己的各种应对接口的开发方式

    再看看各路框架源码,同样的需求是如何用不同的方式实现的,自己试着写一写

    书的话不推荐了,好书很多,NCZ那本可以多看,细看

    熟悉一些原理,闭包,参数,原型链,表达式

    说白了就是多写

    几万行代码下来也就入门了
    kebot
        15
    kebot  
       2013-06-09 21:51:52 +08:00
    其实学CoffeeScript是一个提高Javascript水平的好方法。
    clowwindy
        16
    clowwindy  
       2013-06-09 21:58:04 +08:00
    我现在已经觉得从 nodejs 开始学 js 可能会容易一些。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:16 · PVG 17:16 · LAX 01:16 · JFK 04:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.