js 学习 -- 03

引用类型(Object 和 Array)

引用类型,也即是,java、 oc、 swift等面向对象的类的概念。

  1. Object 类型

Object 是用得最多的一种类型,它的实例不具备多少功能,但对于应用程序存储和传输数据而言,是非常不错的选择,简化版本的 NSObject~~~

Object 创建实例的两种方式:

new 方式:

var person = new Object();
person.name = "dyh";

字面量表示法:

var person = {
    name : "dyh"
};

注意字面量表示法中,属性名可以用字符串表。

js 中除了通过打点方式访问属性,还能通过以字符串的形式放在方括号中:
person["name"];
person.name;
  1. Array 类型

js 中 数组的大小是可以动态调整的。

创建方式:
var array = new Array(10); // 大小为10的数组
var array = new Array("a", "b", "c");

Array 构造函数时,可以省略 new:

var array = Array(10);

Array 可以通过下标访问,参考c。

数组检测:
if (values instanceof Array) {
    
}

为了防止同时有多个框架对Array的构造函数不同的问题,ECMAScript 5 新增 Array.isArray() 方法:

if (Array.isArray(values)) {

}
栈方法:

js为Array专门提供 push() 和 pop() 方法,实现类似栈的行为。

var array = Array();
array.push("a", "b");  // 推入两项

array.pop();  // 出栈
队列方法:

提供了 push() 和 shift() 方法

重排序方法:

第一个参加在第二个参数前,返回负数,在后,返回正数,并列,返回 0

function compare(value1, value2) {
    if (value1 > value2) {
        return 1;
    } else if (value1 < value2) {
        return -1;
    } else {
        return 0;
    }
}

var arr = [2,1,3,5,7];
arr.sort(compare);   // [1,2,3,5,7]
操作方法:

串联一个数组(concat(一个或多个参数)):

var nums1 = [1, 2, 3, 4];
var nums2 = nums1.concat(5, [6, 7]);  // nums2 = [1,2,3,4,5,6,7]

截取数组(slice(范围)):

nums = [1, 2, 3, 4, 5]
var nums1 = nums.slice(1); // nums1 = [2, 3, 4, 5]
var nuns2 = nums.slice(2, 3);  // nums2 = [3, 4]

神奇的 splice():
删除:指定2个参数, 要删除的第一项和要删除的项数, splice(0, 2) 删除前两项;

插入:指定3个或者3个以上参数,前2个参数如上,后面是插入的参数项, splice(2, 0, "num1", "num2")

从插入功能 --> 替换功能:splice(2, 0, "num1")

位置方法

两个位置方法:indexOf() 和 lastIndexOf();都接受两个参数:要查找的值和(可选的)查找起点位置索引。

var nums = [1, 2, 3, 4, 5, 4, 3, 2, 1];

nums.indexOf(4);  // 3
nums.lastIndexOf(4); // 5
nums.indexOf(4, 4);  // 5
nums.lastIndexOf(4, 4); // 3ki
迭代方法

js 为数组定义5个迭代方法:every()、some()、filter()、forEach()、map():

var nums = [1, 2, 3, 4, 5, 4, 3, 2, 1];
var everyResult =  nums.every(function(item, index, array){
    return (item > 2);
});    
alert(everyResult); // false

var someResult =  nums.every(function(item, index, array){
    return (item > 2);
});    
alert(someResult); // ture

var filterResult =  nums.every(function(item, index, array){
    return (item > 2);
});    
alert(someResult); // [3, 4, 5, 4, 3]

var mapResult =  nums.every(function(item, index, array){
    return item * 2;
});    
alert(mapResult); // [2, 4, 6, 8, 10, 8, 6, 4, 2]

nums.forEach(function(item, index, array){
    // 执行某些操作
});  
归并方法

ECMScript 5 新增两个归并数组: reduce() 和 reduceRight():

var value = [1, 2, 3, 4, 5];
var sum = value.reduce(function(prev, cur, index, array){
    return prev + cur;
});
alert(sum);   // 15

你可能感兴趣的:(js 学习 -- 03)