你不知道的事 – Robynn & Kendy

一个来自香港的音乐组合。翻唱的是王力宏的歌,别有一番味道啊。

Walk Away – Dia Frampton

非常不错的一首歌,歌手 Dia Frampton 是一个选秀明星,参加了美国好声音。

七个 JavaScript 基本技巧

本文翻译自Tech.Pro

JavaScript 本质上是门简单的语言,而通过一些设计模式来得到进化,我们也经常将这些模式融入到 JavaScript 框架中来加速 Web 应用的开发。许多刚入门的开发者却太依赖框架,忽视了一些非常有用的 JavaScript 技巧,在此列出 7 个技巧,它们非常适合用来处理一些基本任务:

1.String.prototype.replace: /g/i 标志

许多 JavaScript 新手都很纳闷为什么字符串的 replace 方法不替换所有匹配的子串,而是只替换第一个。当然,有经验的人知道这里应该用一个正则表达式并加上全局标志(/g):

// 错误
var str = "David is an Arsenal fan, which means David is great";
str.replace("David", "Darren"); // "Darren is an Arsenal fan, which means David is great"
// 正确
str.replace(/David/g, "Darren"); // "Darren is an Arsenal fan, which means Darren is great"

另外一个错误就是当大小写都要匹配的时候没有加上 /i 标志:

str.replace(/david/gi, "Darren") // "Darren will always be an Arsenal fan, which means Darren will always be great"

每一个开发者都在这里犯过错——所以要学会这两个标志!

2.类数组对象与 Array.prototype.slice

数组的 slice 方法主要是用来从一个数组中截取一段下了,而许多人没有注意到它也可以用来将类数组的对象比如 argumentsNodeList 等对象转换为真的数组:

var nodesArr = Array.prototype.slice.call(document.querySelectorAll("div")); // 所有 DIV 元素组成的数组
var argsArr = Array.prototype.slice.call(arguments); // 把 arguments 对象转换为真正的数组
// 注:这个技巧不适合 IE8 以及之前的版本,会报错,因为它们的 NodeList 对象是利用 COM 对象实现的,不是真正的 JavaScript 对象

你也可以调用 slice 来克隆一个对象:

var clone = myArray.slice(0);

Array.prototype.slice 在 JavaScript 中是一个不折不扣的好东东。
阅读全文 »

If I Die Young – The Band Perry

乐队不是太熟悉,据说是来自美国的乡村音乐乐队,这是他们最火的一首歌。

new Date 与 new Date()

今天在某个地方看到了 new Date 的写法,也就是创建对象时,省略了后面的一对括号,这种写法不太常见,我也很疑惑,到底跟 new Date() 有没有区别?于是就去研究了一下。

答案就是:没有区别,这是 new 运算符的一种特殊情况,如果创建对象时不需要传递参数,那么括号就可以省略。不过 JSLint 遇到这种写法还是会报错的。

如果后面紧跟着就调用该对象的方法,那么就不同了:

var o = new Date().toString();
var p = new Date.toString();

后一种写法会报错,因为 Date.toString 被当成了构造函数的名字,而它不是个构造函数。

所以老这么写也是不太安全的,我觉得平时还是尽量加上括号比较好一点,就像别人所说,这只是一个语法糖(syntactic sugar)而已。

参考:Stack Overflow

flight