js学习笔记一

来源:互联网 发布:aster遥感数据 编辑:程序博客网 时间:2024/06/05 06:24

1.      基本类型和引用类型。

基本类型包括:null , string, bool, Number, undefined

引用类型: Array,  Obect,…..

 

基本变量复制值时是按值传递,两者是完全分开的。而引用类型复制的是指针,二者仍然是指向一个相同的空间。

2.      参数的函数是按值传递。但是传引用变量时,复制的是指针。

 

3.      检测类型可以用typeof()和instanceof()()来检测数据类型。

 

4.      执行环境及其作用域(访问变量的机制。)

 

5.      With()

With(location){

Var url = href+qs;

}

 

6.      Js没有块级作用域。即在ifelse for 这些块内都是属于这些块属于的当前的环境。所以在块内定义的变量,在这些块结束后,仍然可以使用。

 

7. Object

创建对象有两种方法:第一种使用new关键字  第二种使用对象字面量表示法。

var person ={name:”name”,age:20};

访问对象方法可以使用.语法  也可以使用[]

 

7.      Array

(1)var arr = new Array(1,2,4);

var arr =[1,3,5];  数组字面量表示法

(2)var len = arr.length;  求数组长度

(3).push()   .pop()   .shift()  .unshift()

 

(4)arr.reverse()   反转数组顺序

arr.sort()     

为数组排序  需要接收一个比较函数作为参数。(它是将数组的每一为转为字符串再进行比较。

(5)var arr2 = arr.concat(5,[6,7]) 

复制arr数组并且给数组末尾加5,6,7  形成一个新的数组arr2 原数组不改变。

var arr3 = arr2.slice(1,4);  

从第一位开始到第三位结束,截取arr2  形成一个新的数组arr3 原数组不影响。

(6)splice()

           删除:splice(0,2)接收两个参数。第一个指定从哪儿开始删,第二个指定删除几项。

           插入:splice(2,0,””,””)从第二个位置处插入删除0项  后面是要插入的项

           替换:splice(2,2,””,””)从第二个位置开始删除两项,然后开始插入。

           Splice()方法始终返回一个数组,该数组是从原数组中被删除的项。没有删除则返回空数组

 

(7)indexOf() 第一个参数要在数组中查找的项,第二个可选参数从哪个位置开始查。返回要查询的项在数组中的位置,没有则返回-1

lastIndexOf()是从数组末尾往前查。

(8)迭代方法

         every()   map()  filter()       forEach()    some()

   对数组的每一项执行一个函数。

(9)归并方法:reduce()    reduceRight()

 

8.      正则

var re = /cat/g;        //都是RegExp的实例。

re.test(“catasstroph”);  //test()如果匹配成功则返回true

 

var re = new RegExp(“cat”, ”g”);

re.test(“catasstroph”);   //两种方式创建的正则表达式相同。

(2)exec()方法  专门为捕获组而设计的。即使在模式中设计了全局匹配g也只会返回一个匹配项,只有多次执行ecec()才会继续向下匹配。

 

9.      Function类型

(1)      Js中每个函数都是Function类型的一个实例,而这个函数名就是指向函数对象的指针。

(2)      可以使用new  Function()来创建一个函数,但是不推荐使用。

(3)      没有重载。

(4)      要访问函数的指针而不执行函数,就去掉函数名后面的那对圆括号。

(5)      函数内部属性

Arguments:用数组保存了传给该函数的所有参数   同时这个对象还有一个callee的属性,该属性是一个指针,指向了拥有这个arguments对象的函数。

Eg:  

               functionfactorial(num){            //递归                           If (num <= 1){                                 return 1;}                           else{                                return num*arguments.callee(num-1);}                           }

      B: 另一个特殊对象时this 它引用的是函数据以执行的环境对象(全局作用域中调用函数时,this对象引用的就是window)

                   C:  caller 这个属性保存着调用当前函数的函数的引用。

(6)      函数属性和方法

A: length 和 prototype属性

length属性表示函数希望接受到参数的个数。

Eg:        

function sum(num1,num2){

        return num1 + num2;

    }

alert(sum.length);    //弹出2  该函数希望接收两个参数。

 

B: call() 和 apply()方法。作用相同,区别是接收参数的方式不同。其用途是在特定的作用域中调用函数(实际上等于设置函数体内的this对象值)。第一个参数是在其中运行函数的作用域。

Eg:

window.color= "red";    var o = {color: "blue"};    function sayColor(){        alert(this.color);    }    sayColor();                  //red    sayColor.call(this);       //red    sayColor.call(window);      //red    sayColor.call(o);            //blue<span style="font-size:18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

说明:上面的函数改变了sayColor的作用域环境。这里没有传递参数。apply()传递参数是一个数组或者arguments对象。call()是分别传递每一个参数。

bind()  这个方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值。

Eg:

varansayColor = sayColor.bind(o);

    ansayColor();     //blue

 

10.  基本包装类型Boolean  Number   String

为了让我们能够调用一些方法,ESMAScript提供了上面三个特殊的引用类型。我们读取一个基本类型值的时候,后台就会自动创建一个对应的基本包装类型的对象,这样我们就可以使用这些对象提供的方法了。

(1)      Number

toFixed()  会按照指定的小数位,返回数值的字符串表示。

var num =10;

alert(num.toFixed(2));   //"10.00"

(2)      String

A:  charAt()  接收一个参数,返回字符串在该位置的字符。

charCodeAt()  接收一个参数,返回字符串在该位置的字符编码。

 

                     B:  concat()  用于将一个或多个字符串拼接起来,返回一个新的字符串。

slice()    substr()   substring()都是截取字符串,第一个参数是开始的位置,substr()第二个参数是截取的位数。  其他两个第二个参数是截取到哪里之前为止。

 

C:  indexOf() lastIndexOf()  从一个字符串中搜素给定的子字符串,返回字符串所在的位置。 区别:lastIndexOf()是从字符串后边往前检索。

    第一个参数是要检索的子字符串,第二个可选参数是从哪个位置开始检索。

D:  trim() 去掉字符串左边和右边的空格。

 

E:  toLowerCase() toUpperCase()  字符串的大小写转换。

 

F:  字符串的模式匹配 match()  search()

Eg:  var text = "cat, bat, sat, fat";

    var pos = text.search(/at/);    //正则表达式

    alert (pos);                     //1

    var matches = text.match(/.at/);

    alert(matches[0]);              // cat

G:  replace()  用法很灵活  接收参数种类不同,执行效果不同。

var text = "cat, bat, sat, fat";

    var result =text.replace("at", "ond");  //"cond, bat, sat, fat"

    alert(result);

    var result2 =text.replace(/at/g, "ond"); //"cond, bond, sond, fond"

    alert(result2);

 

H:split()

    vartext = "cat, bat, sat, fat";

    var text2 =text.split(',');

    alert(text2);      //["cat", "bat","sat", "fat"]

还可以接收第二个参数,规定生的数组的大小。

 

11.  Math对象。

(1)      min()  和 max()方法  接收任意多个数值参数。

Eg:    varmax = Math.max(3,5,8,9,2);

            alert(max);

 

      varvalues = [1,2,3,4,5,6];

    var max = Math.max.apply(Math,values);

        alert(max);

(2)      Math.ceil()  小数舍入为整数,向上舍入

Math.floor()   向下舍入

Math.round()  四舍五入

(3)      Math.random()

从某一个整数范围内随即选择一个值

 

值 = Math.floor(Math.random()*可能值的总数 + 第一个可能的值);

Eg: var num = Math.floor(Math.random()*9+2);    //随机一个2到10 之间的整数。 

 

0 0
原创粉丝点击