请教如何系统的学习下Javascript,大学时候选修课学习过编程,虽然毕业后没有进入这行但感觉基本的概念自己还是了解的,平日也会点基础的Python,但看到JS完全傻眼了... - V2EX
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 5630 次点击
    这是一个创建于 4509 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想实现一个鼠标滑倒特定位置显示悬浮窗口的效果,网上搜了下,搜到一个范例脚本完全看傻眼了...

    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     Solana     2399 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:21 PVG 09:21 LAX 18:21 JFK 21:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86