讀angularjs的源碼開頭。
var lowercase = function (string) { return isString(string) ? string.toLowerCase() : string; }; var uppercase = function (string) { return isString(string) ? string.toUpperCase() : string; };
function isString(value) {
return typeof value == 'string';
}
一看知道是大小寫的互相轉換,不過angular.js為了保證js的toLowerCase會出現異常 因此又補充了兩個方法
if ('i' !== 'I'.toLowerCase()) { lowercase = manualLowercase; uppercase = manualUppercase; } var manualLowercase = function (s) { return isString(s) ? s.replace(/[A-Z]/g, function (ch) { return String.fromCharCode(ch.charCodeAt(0) | 32); }) : s; }; var manualUppercase = function (s) { return isString(s) ? s.replace(/[a-z]/g, function (ch) { return String.fromCharCode(ch.charCodeAt(0) & ~32); }) : s; };
詳解manualLowercase的方法
首先判斷是否是字符串 接着如果在字符串中 發生了"A-Z"之中的字母被替換了,那么替換"A-Z"的就是他相對應的小寫字母“a-z”.
"A.charCodeAt(0)"==>65
"A.charCodeAt(0)|32"==>97
"String.fromCharCode(97)"==>a
通過我很不熟悉的位運算符,就這樣完成了大小寫的互轉,寫實在有點巧妙,學習了。