目前在自学JavaScript,感觉非常的吃力,是不是我的方法不对?

2014-01-22 12:03:02 +08:00
 83f420984
我自己的学习方法是,看JavaScript DOM编程艺术,第一章节我研究了近3个星期,始终不明白它里面的讲的对象与数组与代码表示的意思,然后实现是看不下去了;

转而去看妙味课堂Javascript视频教程,里面前5节就是JS学前预热课程,这5节课程重复看了10遍以上,不停地练习视频里的例子,自己已经可以写点简单的JS效果了;

然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑

现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等
23891 次点击
所在节点    程序员
77 条回复
edward1992
2014-01-22 13:11:34 +08:00
别怕,学Javascript是有用的,web现在呈现一个js大一统的趋势,学Javascript大方向上错不了。

但是Javascript是一门设计很不完善的语言,很多琐碎的语法细节会让你花掉很多时间。

建议还是结合到具体项目来学习。我说的项目不用很大,比如自己打个博客什么的就够了。
tonitech
2014-01-22 13:19:18 +08:00
你以前学过其他的语言吗?
learnshare
2014-01-22 13:28:38 +08:00
@donwa
@luoyou1014
我推荐先学 jQuery,比原生 API 容易上手。

其实入门的第一步是 w3school(去操作一下里边的演示,然后随便修改、运行一下),然后是一本详细的书(比如 JS 权威指南 6),下一步是学习高级用法(面向对象、设计模式什么的),最后是应用(随时参考 MDN、webplatform 的文档)
83f420984
2014-01-22 13:33:54 +08:00
@learnshare 没有学的其它的语言
84840
2014-01-22 13:40:48 +08:00
TankyWoo
2014-01-22 13:42:20 +08:00
现在一般都是事件驱动式学习。
83f420984
2014-01-22 13:42:53 +08:00
83f420984
2014-01-22 13:43:41 +08:00
@TankyWoo 事件驱动式学习是如何学习?
TankyWoo
2014-01-22 13:50:36 +08:00
@83f420984 就是有需求、有任务,然后针对这个任务,去学习。

也可以理解为“目标”
84840
2014-01-22 13:52:18 +08:00
常用的算法Javascript版参考这里http://www.nowamagic.net/librarys/veda/detail/167
ianva
2014-01-22 13:54:43 +08:00
1. JavaScript DOM编程艺术 这本书最好的地方在于你不需要关心javascript是什么就能做出一些效果来,让新手有兴趣玩下去
2. javascript 是一门语言,dom 不是javascript的一部分 dom 是 Document object model 就是浏览器提供的用来操作文档的一种办法,但它本身是低级或中级的api,也就说面向的应用方式相对底层,所以用起来很不方便,不同的浏览器实现也有差异,所以用一些dom 库会更好,如jquery,要分清楚什么是语言,什么是平台提供的api。
3. 因为大部分时候javascript面对的平台是浏览器(node.js是另一个方向),所以可以通过实现一些浏览器上的小功能去学习,jquery是个易用的东西,他能帮助很容易你将学习到的javascript的语言特性呈现出来。
4. 现在这个阶段了解原生的dom接口意义并不大,因为像jquery,mootools,yui这些库已经把dom能做到的99%的事情都实现了,能用更方便的接口为什么要用原生呢,用原生本身就是对项目的不负责,因为跨浏览器本身会遇到的问题比你想想的要多太多了,如果看过一些库源码相信可以了解到,不但会降低项目的稳定性,还会带来各种维护性问题。

推荐的书目:
1. javascript 权威指南(David Flanagan)
2. JavaScript高级程序设计(Nicholas C. Zakas)
3. javascript 语言精粹(Douglas Crockford)
4. JavaScript设计模式(Addy Osmani)
coolicer
2014-01-22 13:54:49 +08:00
成长是有个过程的。我当时也经常在问自己,虽然现在JS很久没写,感觉也差不多。懂了语法,剩下的只有算法要靠自己想了。
84840
2014-01-22 13:54:57 +08:00
同意“就是有需求、有任务,然后针对这个任务,去学习。”
@TankyWoo @83f420984

这个方法比较好。

在有Javascript基础的前提下,找一个具体的代码去读,去练习。
我的VBSript就是这么学习的
learnshare
2014-01-22 13:57:38 +08:00
@83f420984 JS 不太需要其他语言的基础就可以学习的
Mutoo
2014-01-22 14:11:35 +08:00
"现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等"

这些程序概念的出现都是为了解决特定问题的,显然你没有遇到,或者还没正视这些问题。

刚开始编程的时候,你肯定会用大量的变量,x y z x0 x1 x2 ... 越来越多,多到你都不知道要怎么给它们起名字,(除非你还在写很小的程序),数组就是为了帮你分组一些数据用的。

somethings = [...]

你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...

然后你会学到循环,连索引都不用自己打了,用循环变量来统领它们。

for(i=0;i<len;i++) doSomething(somethings[i]);

然后你会接触到越来越强大的指令,编程的过程就是循序渐进的。

对象可以让你以更宏观的角度去解决问题。

闭包可以让你区分或隐藏数据(不要问我为什么要隐藏)。

不过我还是不理解你为什么会吃力……有人逼你一个星期要学完吗?
83f420984
2014-01-22 14:26:14 +08:00
@Mutoo 讲的太好了,用很直白的语言说明了JS的对象,数组等起的作用;
吃力是因为学一个知识点,需要很长时间的理解和不断的练习才明白它要作用和用法
Mutoo
2014-01-22 14:31:08 +08:00
@83f420984 多动手,多看书,耐心。一个概念没看懂,就换几本书看,不同的书会从不同的侧面来解释同样的事物。当你看懂了,再回过头就很容易了。

“然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑”

这就是一个很好的开始。
hkongm
2014-01-22 14:53:30 +08:00
JavaScript高级程序设计(Nicholas C. Zakas)
itfanr
2014-01-22 14:56:49 +08:00
@turing 嗯 你是过来人 哈哈
raincious
2014-01-22 14:58:40 +08:00
@Mutoo

>> 你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...

Bad practice.

建议一定要节省变量或者有一定洁癖的话,用Object搞定。

var setting = { url: '', type: '' };

这样比 var url = '', type = '';简洁。

但是不给变量起名字,相当于 var a=0, b=0, c=0;,很明显不符合规范。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/97962

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX