- 对象的定义方式
- 字面量:var a = {}
- 构造函数(系统自带)
- 自定义构造函数
- Object.create()
- 数组的2种定义方式(全来源于Array.prototype)
- 数组字面量:var a = []//相当于new Array[]
- 系统提供的构造方法:var a = new Array[]
push
// push 可以在数组最后添加多为数据
//写push方法
Array.prototype.mypush = function(){
for(var i = 0; i < arguments.length; i++){
//这里的this.length会自动改变,无需手动+1
this[this.length] = arguments[i];//谁调用this,谁就是this
}
return this.length;//返回数组长度
}
pop
shift
&unshift
课后题:手写shift方法思路
方式1:把插入的数作为新数组和本数组拼接concat
方式2:把本数组push到新数组后面
reverse
splice(从第几位开始,截取多少长度,在切口处添加新的数据)
- splice如何实现负数参数定位?
// 假设数组长度是4
splice = function(pos){
pos += pos > 0 ? 0 : this.length;
//-2 + 4 = 2
//-1 + 4 = 3
//此处省略越界处理
return ((pos >= 0 || pos < this.length) ? [数组] : [])
}
sort
var arr = [5,4,10];
//选择排序 //5,10 第3遍传参
//最小的放在 //4,10 第2遍传参 顺序不变
//该轮数组最前 //5,4 第1遍传参 顺序调换
arr.sort(function(a,b){
if (a < b ) {// 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b ) {
return 1;
}
// a must be equal to b
return 0;
}
//第二版
//选择排序 //5,10 第3遍传参
//最小的放在 //4,10 第2遍传参 顺序不变
//该轮数组最前 //5,4 第1遍传参 顺序调换
arr.sort(function(a,b){
return (a - b) ;//升序
// return (b - a) ;//降序
});
//给一个有序的数组,乱序
var arr = [1,2,3,4,5,6,7];
arr.sort(function(a,b){
return Math.random() - 0.5;
});
//按年龄排序
var lily = {name:'lily',age:18,sex:'female'}
var john = {name:'john',age:10,sex:'male'}
var lucy = {name:'lucy',age:3,sex:'female'}
var arr = [lily,john,lucy];
arr.sort(function(a,b){
return a.age - b.age;
})
concat
join:按连接符连接数组元素成字符串
<互逆>split:按拆分符拆分字符串成数组
- join() 不传参数按,(逗号)连接