Javascript 高级程序设计笔记

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页。

 

posted @ 2016-07-08 09:46  小钦差  阅读(179)  评论(0编辑  收藏  举报