1、null类型
null表示一个空对象
var a; //此时,a为undefinded if(a != null){ alert("a"); }else{ alert('b'); }
//b
上述代码不应该弹出a吗?难道null == undefined?实际上,undefined值是派生自null,所以返回结果为true
2、number()和parseInt()的区别
number对空字符返回“0”,而parseInt返回NaN;
parseInt(1234abc) //1234
Number(1234abc) //NaN
5.5:function类型
1、函数没有重载,同一函数名,新函数会覆盖旧函数。
2、函数声明(function sum) 和函数表达式(var sum = function)的区别:函数声明时,解析器会优先把他们放到源代码顶部
alert(sum(10,10))
function sum (num1,num2){
return num1 + num2;
}
这是正确的,若使用函数表达式则报错
3、通过比较函数进行排序 //113页
function compare (name) { return function (obj1,obj2) { var value1 = obj1[name]; var value2 = obj2[name]; if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; }else{ return 0; } }; } var person = [ {name:"john",age:28}, {name:"kaka",age:43}, {name:"xiaohong",age:30} ]; person.sort(compare("age")); alert(person[0].name);
4、函数内部属性——函数内部特殊对象:arguments
function factor(num){ if(num<=1){ return 1; }else{ return num * arguments.callee(num-1);
//return num * factor(num-1); //函数名与执行函数耦合 } } var a = factor; //非耦合情况下,仅复制函数factor为副本a factor = function(){ return 0; } alert(a(5)); //120 若耦合,此处将为0 alert(factor(5)); //0
5、函数属性和方法
函数也是对象,所以也有属性和方法,包括length(函数参数的个数)和prototype两个属性
prototype有两个方法:apply()和call()
5.6:基本包装类型
1、Number类型
toFixed()方法:会按照指定的小数位返回数值的字符串表示;
2、string类型
charAt()方法:charAt(1),返回字符串中索引值为1的字符。string.charAt(1) === string[1];
charCodeAt()方法:返回字符编码而不是字符
indexOf和lastIndexOf:搜索指定字符串所在的位置。
toLowerCase()和toUpperCase():转换大小写。
5.7:单体内置对象
1、Math对象
Math.ceil():向上取舍。
Math.floor():向下取舍。
Math.round():正常四舍五入。
随机函数:
function select (loverValue,upperValue) { var chiose = upperValue - loverValue + 1; //或者所有随机值的数量 return Math.floor(Math.random() * chiose + loverValue); }
alert(select(1,10));
原本Math.random返回的是0-1之间的随机值,(不包括0和1),先用最大值减最小值再加1或者所有随机值的数量(例如,1—10之间有10个数,10-1+1)
6、面向对象
1、原型
什么是原型:每创建一个新函数,就会根据特定规则创建一个prototype属性,指向原型对象,这个原型对象有个constructor属性,
7、函数表达式
1、函数声明:函数声明最重要的特征就是“函数声明提升”,执行代码前会先读取函数声明。
hi() function hi(){ //正确,若为var hi = function(){}则报错 alert("hi"); }
8、BOM
1、moveTo():
10:DOM
10.1.1、Node类型(节点类型):
1、appendChild():末尾插入节点;
2、insertBefore():有两个参数,要插入的节点和作为参考的节点
3、replaceChild():替换节点。两个参数,要插入的节点和要替换节点的位置。
4、removeChild():移除节点。
所有节点都有类型:cloneNode():创建某节点的副本,只有一个参数,为布尔值。true为复制节点以及整个子节点数,false为只复制节点本身。
normalize():处理文本节点,
10.1.2:document类型
<div id="odiv"></div> <script> var odiv = document.getElementById("odiv") alert(odiv.getAttribute("id") == odiv.id); odiv //true </script>
10.1.4:text类型
1、document.createTextNode():创建文本节点
2、normalize():合并两个或多个文本节点。
3、splitText():分割文本节点,有一个参数,代表从指定位置开始切割
10.1.5:comment类型
10.2:DOM操作技术
10.2.1:
11、DOM扩展
11.2元素遍历
childElementCount:返回子元素的个数(不包括文本节点和注释)
fitstElementChild:指向第一个子元素(firstChild的元素版)
lastElementChild:指向最后一个子元素(lastChild的元素版)
13:事件
13.2.3:事件处理程序
btn.addEventListener("click", hader,false); //false:冒泡阶段调用。true:捕获阶段调用
remove时,要注意使用相同函数,详见352页。