JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已是全部 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即便多年的 JavaScript 程序员,也未能彻底吃透。本文从7个方面讲述 JavaScript 中那些你不很熟知但很是实用的技巧。程序员
JavaScript 可使用简略语句快速建立对象和数组,好比下面的代码:json
可使用简略语句以下:数组
对象 car 就此建立,不过须要特别注意,结束花括号前必定不要加 ";" 不然在 IE 会遇到很大麻烦。浏览器
建立数组的传统方法是:缓存
使用简略语句则:框架
另外一个可使用简略语句的地方是条件判断语句:函数
能够简略为:网站
JSON 是 "JavaScript Object Notation" 的缩写,由 Douglas Crockford 设计,JSON 改变了 JavaScript 在缓存复杂数据格式方面的困境,以下例,假如你要描述一个乐队,能够这样写:ui
你能够在 JavaScript 中直接使用 JSON,甚至做为某些 API 的返回数据对象,如下代码调用著名书签网站delicious.com 的一个 API,返回你在该网站的全部书签,并显示在你本身的网站:设计
JavaScript 有不少内置函数,有效的使用,能够避免不少没必要要的代码,好比,从一个数组中找出最大值,传统的方法是:
使用内置函数能够更容易实现:
另外一个方法是使用 Math.max() 方法:
你能够用这个方法帮助探测浏览器
这解决了 IE 浏览器的一个问题,经过这种方法,你老是能够找到那个正确的值,由于浏览器不支持的那个值会返回 undefined。
还可使用 JavaScript 内置的 split() 和 join() 函数处理 HTML 对象的 CSS 类名,若是 HTML 对象的类名是空格隔开的多个名字,你在为它追加或删除一个 CSS 类名的时候须要特别注意,若是该对象尚未类名属性,能够直接将新的类名赋予它,若是已经存在类名,新增的类名前必须有一个空格,用传统的 JavaScript 方法是这样实现的:
使用 split 和 join 方法则直观优雅得多:
与其在 HTML 文档中设计一堆事件,不如直接设计一个事件代理,举例说明,假如你有一些连接,用户点击后不想打开连接,而是执行某个事件,HTML 代码以下:
传统的事件处理是遍历各个连接,加上各自的事件处理:
使用事件代理,能够直接处理,无需遍历:
JavaScript 的一个问题是,任何变量,函数或是对象,除非是在某个函数内部定义,不然,就是全局的,意味着同一网页的别的代码能够访问并改写这个变量(ECMA 的 JavaScript 5 已经改变了这一情况 - 译者),使用匿名函数,你能够绕过这一问题。
好比,你有这样一段代码,很显然,变量 name, age, status 将成为全局变量
为了不这一问题,你可使用匿名函数:
若是这个函数不会被调用,能够更直接为:
若是要访问其中的对象或函数,能够:
这就是所谓 Module 模式或单例模式(Singleton),该模式为 Douglas Crockford 所推崇,并被大量应用在Yahoo User Interface Library YUI 。
假如你想在别的地方调用里面的方法,又不想在调用前使用 myApplication 这个对象名,能够在匿名函数中返回这些方法,甚至用简称返回:
别人使用你编写的 JavaScript 代码的时候,不免会更改某些代码,但这会很困难,由于不是每一个人都很容易读懂别人的代码,与其这样,不如建立一个代码配置对象,别人只须要在这个对象中更 改某些配置便可实现代码的更改。这里有一篇 JavaScript 配置对象详解 的文章,简单说:
你应当在最后一步作这项工做,这里有一个文章,交 付代码前的5件事 值的参考。
JavaScript 是一门前台语言,你须要别的语言同后台交互,并返回数据,使用 AJAX,你可让 JavaScript 直接使用同后台的交互,将复杂的数据处理交由后台处理。
本身编写适应各类浏览器的代码是彻底浪费时间,应当选择一个 JavaScript 框架,让这些复杂的事情交给框架处理。