框架的确好用, 不过他们也隐藏了JavaScript中丑陋的细节和DOM的运作机制. 如果你的目标是敢于自称"我懂JavaScript", 那么花时间学习框架无异于南辕北辙.
下面这些JavaScript语言特性你应该熟记在心并避免被他们困扰, 然而多数人可能对此还不熟悉.
- object.prop和object['prop']是一回事. (所以咱能不用eval么, 谢谢嗷); 对象的属性名都是以字符串来索引的, 连数组的下标都是; for...in能拿来干啥, 不能干啥.
- 属性检测; undefined是个啥(及其肮脏之处); 不出名的in操作符有何优势, 它与typeof/undefined有何不同; hasOwnProperty方法; delete操作符的作用
- Number类型本质上只是浮点类型; 语言无关地使用浮点类型的困难所在; 避免parseInt方法的八进制陷阱
- 潜逃函数的变量作用域; 为避免产生全局变量而使用var关键字的必要性; 作用域与闭包的结合应用; 某个经典的闭包与循环的问题
- 全局变量与window对象的属性其实是一回事; 全局变量与DOM对象在IE中的命名冲突问题; 以及使用var来规避此类问题.
- function语句被提升的机理, function语句与function表达式的区别; 为什么避免使用具名函数表达式.
- 构建函数, prototype属性, new关键字的工作机制; 在此基础上实现一个基本的类-子类-实例OO系统; 何时考虑使用基于闭包的对象来取代原型.(一般的JS教程这里讲的都很渣, 我花了好几年才真正理解)
- this关键字在函数调用时确定而非函数定义时; 传入作为参数函数为什么不像其他语言那样正常工作; 如何用Function.prototype.bind来解决这个问题.
- ES5引入的新语言特性, 如indexOf, forEach等; Array类的函数式编程方法; 如何为旧浏览器引入这些方法; 用匿名函数调用这些方法来提高代码可读性.
- 浏览器与JS的控制流程交换机理; 同步与异步执行; 运行中主动触发的事件与真的事件间的区别, 以及timeout的机制; 调用同步执行的方法(比如alert)可能造成的控制流重进入的潜在异常;
- 跨window编程中instanceof潜在的问题以及不同文档间控制流程是怎样互相影响的; postMessage会如何解决该问题.
这里绝大多数问题都需要你批判性地看待JavaScript, 理解它由于历史原因而遗留下来的种种不完美(一般来说比别的语言都要糟糕), 并学会规避这些陷阱. Douglas Crockford在这方面的研究很值得一读(虽然我并非100%同意他的"语言精粹")
分享到:
相关推荐
Stackoverflow 上关于 Python 的问题
### StackOverflow创始人推荐图书知识点详解 #### 一、引言 StackOverflow作为全球最大的程序员社区之一,其创始人Jeff Atwood的推荐图书具有重要的参考价值。本文将深入解析这些书籍的关键知识点,帮助读者更好地...
如果线程在执行过程中需要的栈空间超过了这个限制,就会抛出`StackOverflowError`。 在处理`StackOverflowError`时,一种常见的解决方案是尝试增加`-Xss`的值。这可以通过在JVM启动参数中指定来进行,例如`java -...
在深入探讨Stackoverflow的架构设计和开发内幕之前,有必要先对Stackoverflow本身有一个基本了解。Stackoverflow是一个面向编程专业人士的问答网站,其特点在于用户可以问问题、回答问题并参与社区讨论。由于其高效...
stackoverflow java mobi 电子书 ebook java学习好资料
标题中的“Chrome扩展程序可帮助码农收集StackOverflow上的问题或回答”揭示了一个关于开发者工具的知识点,即利用Chrome浏览器的扩展程序来高效管理和保存在Stack Overflow上发现的有价值的信息。Stack Overflow是...
为了让“翻译”更有意义,给阅读者带来更多、更有效的收获,我们会有一些加工: 例如,对问题进行分类,整合多个答案、删除冗余内容、加上自己的验证结果、心得等等 对于参与翻译的人,这也是很好的一个学习、理解...
【标题】"Stackoverflow上人气最旺的10个Java问题J"揭示了Java开发者在实践中遇到的一些最具挑战性的问题。Stackoverflow作为一个全球知名的程序员问答社区,汇集了各种技术问题和解决方案,尤其对于Java这样的主流...
- **数字字面量作为对象**:虽然直观上可能认为数字不能直接用作对象,但JavaScript的解析器会尝试将点号解析为浮点数的一部分。因此,直接使用数字字面量后面跟点号会导致语法错误。 - 示例: ```javascript 2....
stackoverflow问题汇编_android Kindle阅读器格式,阅读时需下载相应阅读器
标题 "stackoverflow fixed 2021-04-08 by storm.zip" 暗示这是一个修复后的 StackOverflow 插件,适用于 IntelliJ IDEA 开发环境。这个修复版本是由用户 "storm" 在2021年4月8日完成的,为了解决原版插件无法正常...
类似 Stackoverflow 的积分系统 3. 可提交文章用于知识库建设 4. 可设定只允许注册用户才能提问和回答 5. 简洁的 CSS 布局 6. 支持主流浏览器 安装方法: ----------------------------------------------- 1. ...
Stackoverflow 热门 Python 文章翻译(文集) 目录 基础 基本语法控制流相关 字符串相关 文件相关 数学相关 基本数据结构 列表 元组 字典 进阶 函数 内置函数 异常 模块 标准库 日期 oop 其他 pip/easy_install...
在本压缩包“stackoverflow上Java相关回答整理翻译.zip”中,包含了对Stack Overflow网站上Java相关问题的高票回答的整理和翻译,这是一个开源项目,旨在帮助中文社区更好地理解和解决Java编程中的常见问题。...
通过分享实践经验和遇到的问题,社区中的每一个人都是受益者,因为他们可以从中学习到不同的解决方案,共同找到更好的工作方式。 另外,Stack Overflow也通过Trello等项目管理工具来管理其博客文章的发布计划。这样...
离线 StackOverflow的dockers部署镜像
django-stackoverflow-trace, Django 错误页w/a 搜索链接 django-stackoverflow-trace自定义 Django 技术错误模板,将相关stackoverflow搜索链接置于异常消息下。安装$ (sudo) pip install django_stackoverflo
stackoverflowSpider是一个模拟在stackoverflow上搜索关键字,然后的搜索后的结果进行网页抓取到本地,将本地的网页文件中的内容解析出来,转化为PDF格式的文档,以便离线阅读。这个程序对程序员朋友学习非常方便。
- **所有变量都是对象**:除了`null`和`undefined`之外,JavaScript中所有的变量本质上都是对象。例如,数字可以通过某种方式被当作对象来处理: ```javascript false.toString(); // 'false' [1, 2, 3].toString...
《StackOverflow-Python翻译》是一本深度探讨Python编程语言的著作,特别适合已经掌握Python基础知识并希望提升编程技能和代码质量的读者。这本书集结了88个关键知识点,旨在帮助读者深入理解Python的精髓,从而在...