6.对象Object

对象 Object
 
对象的概念及操作
对象是一组无序的键值对,是带有属性和方法的集合。
 
通俗讲,对象就是无序的数据集合。
 
属性是与对象相关的值,方法是能够在对象上执行的动作。
 
调用:对象.属性   对象.方法()
 
对象的作用:用于在单个变量中存储多个值。
 
定义对象:
var obj1 = { };
obj1.name = '小错';
obj1.age = 18;
obj1.sayHi = function (){
    alert('hi,大家好');
}
console.log( obj1.name );
obj1.sayHi( );
 
var obj2 = new Object();
obj2.name = '小错';
obj2.age = 18;
obj2.sayHi = function (){
    alert('hi,大家好');
}
console.log( obj2.name );
obj2.sayHi( );
 
 
对象字面量:(JSON对象格式)
var obj = { 键:值, 键:值 ...... };
键:一般用双引号引起来(不用引号也可以)
值:可以是任意类型的数据
var obj = {
    name: '小错',
    age: 18,
    sayHi: function (){
        alert('hi,大家好');
    }
}
 
 
对象类型可以动态添加属性和方法!
简单类型不可以添加属性和方法!
 
 
数组 Array
 
数组的概念及操作
数组,是有序的元素序列。
 
通俗讲,数组就是有序的数据集合。
 
数组属于对象类型。
 
数组的作用:用于在单个变量中存储多个值。
 
创建数组:
var arr1 = [ ];
 
var arr2 = new Array( );
 
var arr3 = new Array( size );
 
var arr4 = new Array( el1, el2, el3 ... );
 
 
基本操作:
var arr5 = ['a', 'b', 'c'];
 
访问数组元素:arr5[0]、arr5[1]、arr5[2]
 
中括号里的数字为数组的索引值,数组的索引总是从0开始!
 
设置数组元素:arr5[1] = 2;  arr5[4] = 5;
 
获取数组的长度(数组中元素的个数):arr5.length
 
 
数组的操作方法:
 
push() 在数组的后面添加(单个或多个)新元素,返回数组新的长度
 
pop() 删除数组的最后一个元素,返回被删除的元素
 
unshift() 在数组的前面添加(单个或多个)新元素,返回数组新的长度
 
shift() 删除数组的第一个元素,返回被删除的元素
 
splice() 可以对数组进行增、删、改,返回一个数组(被删除的元素)
删除n项:arr.splice(起始位置,n)
增加元素:arr.splice(起始位置,0,添加1,添加2......)
修改元素:arr.splice(起始位置,2,替换1,替换2)
 
sort() 将数组进行排序,返回数组
arr.sort(); //默认按照字符排序
 
reverse() 将数组进行倒转,返回数组
arr.reverse();
 
以上方法都会改变原数组!
 
 
slice() 从数组中拷贝一部分,返回新数组
arr.slice(1,4) 包含索引为1的元素,不包含索引为4的元素(拷贝索引为 1 2 3 的元素)
 
concat() 用于合并数组,返回新数组
arr.concat(arr1,arr2......)
 
toString() 将数组转成字符串,返回字符串
 
join() 将数组转成字符串,参数为分隔符,返回字符串
 
以上方法都不会改变原数组!
 
 
数组的遍历:
 
for 循环
 
for/in 循环
没有循环条件,自动取出下标,下标为字符串
一般用于遍历对象,不推荐数组使用
 
 
对象数组/二维数组
 
var arr1 = [
    {name: '小明', age: 18},
    {name: '小红', age: 18},
    {name: '小东', age: 19}
];
 
var arr2 = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
];
 
 
基本类型和引用类型
 
基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。
 
基本类型:number、string 、boolean、null和undefined
 
基本数据类型是保存在栈内存中的简单数据段,是按值访问的,可以直接操作保存在变量中的实际值。
 
var a = 10;
var b = a;
b = 20;
console.log(a);
 
变量b只是保存了变量a复制的一个副本,所以变量b的改变,对变量a没有影响。
 
 
引用类型:对象类型,如 Object 、Array 、Function 等等
 
引用数据类型是保存在堆内存中的对象。
 
在JavaScript中不可以直接操作堆内存中的对象,只能操作对象在栈内存中的引用地址。
 
var obj1 = {name: '老王', age: 28};
var obj2 = obj1;
obj2.name = '老赵';
console.log(obj1.name);
console.log(obj2.name);
 
var obj2 = obj1; 在栈内存中把堆内存对象的引用地址复制一份给obj2。
 
意味着 obj1和obj2 指向同一个堆内存对象。
 
obj2.name = '老赵'; 实际上改变的是堆内存对象。
 
所以,obj1.name和obj2.name 都是'老赵'。
 
 示例:函数的值传递和引用传递
 
 
数组的排序
 
sort() 将数组进行排序,返回数组
arr.sort(); //默认按照字符排序
arr.sort(function (a,b) { //升序,只能对数值排序
    return a-b;
});
arr.sort(function (a,b) { //降序,只能对数值排序
    return b-a;
});
 
冒泡排序:相邻两个数进行比较,大数下沉,小数上浮
function fnSort(arr){
    var t = 0;
    for( var  i = 0 ;  i < arr.length-1; i ++ ){ // 控制比较轮数
        for( var j = 0; j < arr.length-1-i ; j++ ){ //每一轮比较次数
            if( arr[j] > arr[j+1] ){
                t = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = t;
            }
        }
    }  
    return arr;
}
posted @ 2019-06-25 19:02  前端小菜鸟吖  阅读(454)  评论(0编辑  收藏  举报