JavaScript 高级程序设计笔记

2017-03-21  本文已影响10人  小学生的博客

记录下遗忘的知识点


Part3

Boolean

Part4

Paste_Image.png Paste_Image.png

查询标识符,从作用域链的前端开始,向上逐级查询与给定名字匹配的标识符。


Part5 引用类型

对象是某个特定引用类型的实例

1.Object类型

创建方式:
① new操作符后跟Object构造函数
②使用对象字面量表示法。

2.Array类型

ECMAScript数组的每一项可以保存任何类型的数据。
创建方式:
①使用Array构造函数 eg: var arr= new Array();
②使用数组字面量表示法 eg: var arr=[1,2,'A'];
数组最多包含4294967295个项

2.1检测数组
ECMAScript新增 Array.isArray()

2.2转换方法
toString()
valueOf()
toLocaleString()
调用数组的 toString()方法会返回有数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。
调用数组的 valueOf()方法会返回的还是数组。
toLocaleString()不同之处在于,为取到每一项的值,调用的是toLocaleString()方法,而不是toString()方法

join()方法可以使用不同的分隔符来构建这个字符串。 如, || *

2.3栈方法(后进先出)
push() 可以接收任意数量的参数,把他们逐个添加到数组末尾。并返回修改后数组的长度。
pop() 从数组末尾移除最后一项,减少数组的length值,返回移除的项。

2.4队列方法(先进先出)
shift() 移除数组中的第一个项并返回该项,同时将数组长度减一。
unshift()在数组前端添加任意个项并返回新数组的长度。

2.5重排序方法
reverse() 翻转数组项的顺序

sort() 方法时按升序排列数组项(调动数组项的toString()转型方法,比较字符串。)
arrayObject.sort(sortby)
sortby 可选。规定排序顺序。必须是函数。
给数值型数组排序时,可以定义排序函数

var arr = [12,5,8,40];
function sortNumber(a,b){
   return a - b  //  return b-a 为降序排列
}
arr.sort(sortNumber);

或者 复杂点

    var arr = [12,5,8,40];
    function compare(value1, value2) {
        if (value1 < value2) {
            return -1;
        } else if (value1 > value2) {
            return 1;
        } else {
            return 0;
        }
    }
    arr.sort(compare);

2.6操作方法
concat()
创建当前数组的一个副本,将接收到的参数添加到这个副本的末尾,最后返回新构建的数组,

slice()
arrayObject.slice(start,end)
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,.....,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。

2.7位置方法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

2.8迭代方法
map()是对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。这个数组的每一项都是在原始数据中的对应项上运行传入函数的结果
filter()是对数组中的每一项运行给定函数,返回该函数会返回true的项所组成的数组。它利用指定的函数确定是否在返回的数组中包含某一项
every()是对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
some()是对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
forEach() 是多数组中的每一项运行给定函数,这个方法没有返回值。它只是对数组中的每一项运行传入的函数,没有返回值。本质上与使用for循环迭代数组一样。

2.9缩小方法
reduce() reduceRight()
迭代数组的所有项,然后构建一个最终返回的值。

3.Date类型
4.RegExp类型
5.Function类型

函数是对象,函数名是指针。

5.1 没有重载(两个同名函数,后面的会覆盖前面的函数)

5.2 函数声明与函数表达式
解析器会率先读取函数声明,并使其在执行任何代码前可用,
函数表达式,会在解析器执行到它所在是代码行,才会真正被解释执行。

5.3作为值的函数

5.4函数内部属性
特殊对象:arguments 和 this
用例:阶乘

  function factorial(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * arguments.callee(num - 1);
        }
    }

5.5函数属性和方法
每个函数都包含两个属性 length 和 prototype
length 表示函数希望接受的命名参数的个数。
prototype是保存他们所有实例方法的真实所在。

6基本包装类型

引用类型与基本包装类型的主要区别就是对象的生存期。

基本包装类型,也是一种引用类型。基本包装类型是对基本数据类型的封装,封装后即具有基本类型的功能,也有各自的特殊行为(方法)

基本包装类型需要一个new来创建。请看下面的例子:
1.字面量写法:var box = 'Mr. Lee';//字面量
box.name = 'Lee';//无效属性
box.age = function () {//无效方法
return 100;
};
alert(box);//Mr. Lee
alert(box.substring(2));//. Lee
alert(typeof box);//string
alert(box.name);//undefined
alert(box.age());//错误

2.new 运算符写法:var box = new String('Mr. Lee');//new 运算符
box.name = 'Lee';//有效属性
box.age = function () {//有效方法
return 100;
};
alert(box);//Mr. Lee
alert(box.substring(2));//. Lee
alert(typeof box);//object
alert(box.name);//Lee
alert(box.age());//100

6.1Boolean类型
6.2Number类型
6.3String类型

7.单体内置对象

Global对象
Math对象


Part7


Part8 BOM


Part9 客户端检测


Part10 DOM


Part13


Part23 客户端存储


Part25 新兴API


上一篇 下一篇

猜你喜欢

热点阅读