说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2023-06-13 09:14:08 时间
潜意识里也就不会用面向对象的思想去编写JavaScript代码,也很少会去深入了解prototype,closures等概念。这导致书写的代码经常很糟糕。
对于JavaScript的学习,可能最重要的还是要从思想上认识到JavaScript不是玩具语言。JavaScript的作用远不止增加点表单验证,我们可以看看GMail、看看GoogleMaps,如果开发者们没有对JavaScript足够尊敬,是不大可能写出如此优秀的Web应用的。
JavaScript门槛很低,但门槛低并不意味着容易掌握。一定程度上,JavaScript的入门容易以及其极大的灵活性,使得要掌握JavaScript变得很难。从纯语言上讲,我个人的经验是,学习JavaScript比学习Java更具挑战性。我们大多习惯了传统的面向对象表述方式,一定程度上甚至会认为类、封装、继承等概念都得像Java、C++那样,可能都从来没想过没有class,extend,override等概念也能面向对象。JavaScript的面向对象打破了这种思想上的禁锢:世界是多样性的,条条大路通罗马。夸张一点说,深入学习JavaScript,更多的是一种思想上的挑战,能活跃思路,扩大视野,甚至改变对世界的看法。
上面所说的这些,无意于夸大JavaScript的作用和难度。每个人都或多或少的会强调自己所学的知识,但在这里,我希望自己能很客观的传递一个观点:无论什么语言,想要精通,都很不容易;如果想学习某门语言,就得从思想上尊敬这门语言,在尊敬的基础上去学习,才有可能掌握这门语言的精髓。除了JavaScript,再举个HTML的例子:
经常能听到这样的话:HTML多容易,花个一两天也就会了。我自己也曾这么认为。但随着使用HTML经验的增长,慢慢感觉到,对于Web前端开发来说,HTML可以说是最难的。HTML4.01规范中的91个元素就如汉字里的2500个常用字一样,我们读完小学后对常用字应该就都认识了,但要用汉字写篇优秀的文章,却并不容易。HTML也是这样,大部分宣称HTML很容易的开发者,往往只停留在认识body,p,form,table,div,ul等标签上,对于dl,legend,sub,caption等并非生僻的标签甚至都不认识。在常用字还认不全的情况下,宣称HTML很容易,真的很狂妄。(HTML的难度在于如何利用标签构建出结构良好且富含语义的代码,就如写作文一样,不能认为认识几个字就自信能妙笔生花。)
总之,语言无贵贱难易,要从思想上尊敬重视一门语言,才有可能驾驭它,否则,将永远游离在专业程序员的宝殿之外。
对于JavaScript的学习,可能最重要的还是要从思想上认识到JavaScript不是玩具语言。JavaScript的作用远不止增加点表单验证,我们可以看看GMail、看看GoogleMaps,
JavaScript门槛很低,但门槛低并不意味着容易掌握。一定程度上,JavaScript的入门容易以及其极大的灵活性,使得要掌握JavaScript变得很难。从纯语言上讲,我个人的经验是,学习JavaScript比学习Java更具挑战性。我们大多习惯了传统的面向对象表述方式,一定程度上甚至会认为类、封装、继承等概念都得像Java、C++那样,可能都从来没想过没有class,extend,override等概念也能面向对象。JavaScript的面向对象打破了这种思想上的禁锢:世界是多样性的,条条大路通罗马。夸张一点说,
上面所说的这些,无意于夸大JavaScript的作用和难度。每个人都或多或少的会强调自己所学的知识,但在这里,我希望自己能很客观的传递一个观点:无论什么语言,想要精通,都很不容易;
经常能听到这样的话:HTML多容易,花个一两天也就会了。我自己也曾这么认为。但随着使用HTML经验的增长,慢慢感觉到,对于Web前端开发来说,HTML可以说是最难的。HTML4.01规范中的91个元素就如汉字里的2500个常用字一样,我们读完小学后对常用字应该就都认识了,但要用汉字写篇优秀的文章,却并不容易。HTML也是这样,大部分宣称HTML很容易的开发者,往往只停留在认识body,p,form,table,div,ul等标签上,对于dl,legend,sub,caption等并非生僻的标签甚至都不认识。在常用字还认不全的情况下,宣称HTML很容易,真的很狂妄。(HTML的难度在于如何利用标签构建出结构良好且富含语义的代码,就如写作文一样,不能认为认识几个字就自信能妙笔生花。)
总之,
相关文章
- js面试题及答案2020_JS面试题大全
- javaScript学习笔记(一)js基础
- JavaScript笔记(10) 第一阶段结束
- JavaScript数组方法中 push() 和 unshift() 的区别
- JS IOS/iPhone的Safari不兼容Javascript中的Date()问题
- JavaScript刷LeetCode拿offer-js版字典
- 原生 JS 实现 HTML 转 Markdown,以及其实现逻辑(html2md.js 或 html2markdown.js)
- JavaScript学习总结(二十)——Javascript非构造函数的继承详解编程语言
- JavaScript学习总结(十七)——Javascript原型链的原理详解编程语言
- JavaScript学习总结(十六)——Javascript闭包(Closure)详解编程语言
- JS动态引入js、CSS动态创建script/link/style标签详解编程语言
- MySQL与JavaScript结合的强大功能(mysqljs)
- 为什么使用 JavaScript 开发物联网?
- 用JavaScript获取网页中的js、css、Flash等文件
- javascript延时重复执行函数lLoopRun.js
- Javascript常用运算符(Operators)-javascript基础教程
- Javascript入门学习第二篇js类型
- JavaScript入门教程(3)js面向对象
- javascript学习笔记(二)js一些基本概念
- javascript学习笔记(八)js内置对象
- javascript学习笔记(九)js对象设计模式
- JavaScript高级程序设计阅读笔记(十三)js定义类或对象
- JavaScript高级程序设计(第3版)学习笔记6初识js对象
- JavaScript高级程序设计(第3版)学习笔记11内建js对象
- javascript获取浏览器类型和版本的方法(js获取浏览器版本)
- javascript引擎长时间独占线程造成卡顿的解决方案
- JavaScript学习笔记之JS函数
- JavaScript学习笔记之JS事件对象