angularjs里对JS的lowercase和uppercase的完善
读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
通过我很不熟悉的位运算符,就这样完成了大小写的互转,写实在有点巧妙,学习了。