不是jQuery。 不是YUI。不是(等)
框架可能很有用,但是它们经常隐藏一些关于Javascript和DOM实际工作方式的丑陋细节。如果您的目标是能够说“我知道Javascript”,那么在框架上投入大量时间是相反的。
以下是一些Javascript语言功能,您应该了解这些功能在做什么并且不会被吸引住,但是对于许多人来说,它们并不是立即显而易见的:
那
object.prop
和object['prop']
是同一件事(所以请您停止使用eval
,谢谢);对象属性始终是字符串(即使是数组);[什么for
......in
是和什么不是。什么
undefined
是以及为什么闻到;为什么看似鲜为人知的in
操作员是有益的并且不同于typeof
/undefined
检查;hasOwnProperty
; 目的delete
。该
Number
数据类型是一个真正的浮动; 使用浮点数与语言无关的困难;避免parseInt
八进制陷阱。全局变量和
window
属性如何碰撞;全局变量和文档元素如何在IE中不应该冲突,而应该如何冲突;也必须var
在全球范围内使用以避免这种情况。浏览器和用户代码之间的控制流;同步和异步执行;在控件流内部触发的事件(例如焦点)与控件返回时发生的事件和超时;如何调用所谓的同步内置
alert
函数最终会导致潜在的灾难性重入。跨窗口脚本编写如何影响
instanceof
;跨窗口脚本如何影响跨不同文档的控制流;postMessage
希望如何解决这个问题。
最重要的是,您应该批判性地查看Javascript,并承认由于历史原因,它是一种不完善的语言(甚至比大多数语言还多),并且避免了最糟糕的麻烦。克罗克福德在这方面的工作绝对值得一读(尽管我并不100%同意他所说的“好零件”)。



