ES5特性学习

严格模式、数组方法、对象方法、日期

ECMAScript5是2009年标准化的规范。

严格模式(strict)

限制一些用法,相当于弃用了一些之前的语法,具体可见这里

1
'use strict'

数组(Array)方法

forEach

遍历

1
2
3
4
var arr = [5,6,7,8,2,1,3];
arr.forEach(function(value, index, array) {
alert(index+":"+value); // 索引 + 元素值
});

map

遍历

1
2
3
4
5
6
var arr = [5,6,7,8,2,1,3];
arr.map(function(value, index, array) {
if(value > 3){
alert(value+"-"+index); // 索引 + 元素值
}
});

filter

筛选,返回为true的值,返回的数组中会去掉0:

1
2
3
4
5
var arr = [0,5,6,7,8,2,1,3];
var arr_1 = arr.filter(function(value) {
return value;
});
alert(arr_1); // [5,6,7,8,2,1,3]

some

只要有一个值满足条件就会返回true:

1
2
3
4
5
6
7
8
9
var arr = [5,6,7,8,2,1,3];
var res_1 = arr.some(function(value) {
return value > 3;
});
alert(res_1); //true
var res_2 = arr.some(function(value) {
return value > 9;
});
alert(res_2); //false

every

必须全部值满足才会返回true:

1
2
3
4
5
6
7
8
9
var arr = [5,6,7,8,2,1,3];
var res_1 = arr.every(function(value) {
return value>-1;
});
alert(res_1); // true
var res_2 = arr.every(function(value) {
return value>-4;
});
alert(res_2); // false

indexOf

获取元素在数组中的位置索引。

1
2
3
4
5
var arr=[5,6,7,2,5,1,3];
alert(arr.indexOf(5)); // 0
alert(arr.indexOf(5,3)); // 4 (从第3位开始向右找)
alert(arr.indexOf(0)); // -1(未找到)
alert(arr.indexOf(0,"x")) // x被忽略

lastIndexOf

与indexOf不同的是lastIndexOf从末尾开始查找。

1
2
3
4
var arr=[5,6,7,2,5,1,3];
alert(arr.lastIndexOf(5)); // 4
alert(arr.lastIndexOf(5,3)); // 0 (从第3位开始向左找)
alert(arr.lastIndexOf(4)); // -1(未找到)

reduce

若未设置initialValue,则previous一开始是数组的第一个元素。

1
2
3
4
5
var arr=[5,6,7,2,5,1,3];
var sum = arr.reduce(function (previous, current, index, array) {
return previous + current;
});
alert(sum); // 29

reduceRight

从尾部开始计算。

1
2
3
4
5
6
7
8
9
var arr = [1, 2, 3, 4];
var right = arr.reduceRight(function (previous, current, index) {
if (index == 0) {
return previous + current;
}
return previous - current;
});
alert(right); // 0

循环过程:

1
2
3
4
5
6
7
8
Initial:
previous = 4, current = 3 // index = 3
Step 1:
4 - 3 = 1(previous), current = 2 // index = 2
Step 2:
1 - 2 = -1(previous), current = 1 // index = 1
Step 3:
-1 + 1 = 0(previous) // index = 0

isArray

1
2
alert(Array.isArray([])); //true
alert(Array.isArray({})); //false

对象(Object)方法


Object.create()

1
2
3
4
5
6
7
8
9
10
11
12
13
var obj = Object.create(Object.prototype,{
name: {
value: "demo",
enumerable: false,
configurable: false, // false表示该属性不可删除
writable: false // false表示该属性不可修改
}
});
alert(obj.name); // demo
obj.name="123";
alert(obj.name); // demo
delete obj.name;
alert(obj.name); // demo

限制对象属性

Object.preventExtensions(object)

阻止对象添加属性,但可以修改和删除

Object.seal(object)

不能添加和删除属性

Object.freeze(object)

阻止属性和属性值得修改,防止新属性的添加

日期(Date)方法

now

1
Date.now() // 1483334011674

toJSON

1
2
alert(new Date().toJSON());
alert(new Date(2012, 11, 12).toJSON()); //2012-12-11T16:00:00.000Z
文章目录
  1. 1. 严格模式(strict)
  2. 2. 数组(Array)方法
    1. 2.1. forEach
    2. 2.2. map
    3. 2.3. filter
    4. 2.4. some
    5. 2.5. every
    6. 2.6. indexOf
    7. 2.7. lastIndexOf
    8. 2.8. reduce
      1. 2.8.1. reduceRight
    9. 2.9. isArray
  3. 3. 对象(Object)方法
    1. 3.1. Object.create()
    2. 3.2. 限制对象属性
      1. 3.2.1. Object.preventExtensions(object)
      2. 3.2.2. Object.seal(object)
      3. 3.2.3. Object.freeze(object)
  4. 4. 日期(Date)方法
    1. 4.1. now
    2. 4.2. toJSON
|