javascript语言精粹-笔记

时间:2021-05-01 16:17:41

walkDOM

function walkTheDOM(node, func) {
func(node);
node = node.firstChild;
while (node) {
walkTheDOM(node, func);
node = node.nextSibling;
}
}

getElementsByClassName

function getElementsByClassName(className) {
var results = [];
walkTheDOM(document.body, function (node) {
var a, c = node.className, i;
if (c) {
a = c.split(' ');
for (i = 0; i < a.length; i += 1) {
if (a[i] === className) {
results.push(node);
break;
}
}
}
});
return results;
}

第六章

6.5 判断是不是数组

var is array = function (value) {
return value &&
typeof value.splice === 'function' &&
typeof value.length=== 'number' &&
typeof value === 'object' &&
! (value.propertyIsEnumerable ('length'));
};

写一个Reduce

Array. method ('reduce', function(f,value) {
var i;
for (i=0;i<this.length; i +=1) {
value = f(this [i], value);
}
return value;
})

第七章 正则表达式

7.1 匹配url的正则

var parse_url =/^ (?: ([A-Za-z]+) :)? (\/{0,3}) ( [0-9.\-A-Za-z]+)(?:: (d+))? (?:\/([^?#]*))?(?:\? ([^#]*))? (?:#(.*))?$/;

var url ="http://www.ora.com: 80/goodparts?q#fragment";

匹配数字的reg

var parse_number =/^-?\d+(?:\.\d*)? (?:e [+\-]?\dt)?S/i;

var test= function (num) {
document.writeln(parse number.test (num) ); }; true test ("1");
false test ('number');
true test('98.6");
false test ('132.21.86.100');
true test ('123.45E-67');
false test ('123.45D-67');