// 对象: Object // 构造函数 Object : var obj = new Object(); obj.id = 9; obj.name = "lucy"; obj.age = 16; obj.gender = "male"; console.log(obj); // 输出结果: { id: 9, name: 'lucy', age: 16, gender: 'male' } // 对象字面量 var obj = { id:9, name:"lucy", age:16, gender:"male" } console.log(obj); // 输出结果:{ id: 9, name: 'lucy', age: 16, gender: 'male' } // 函数 // 函数声明 function test(){ console.log(" 我是函数声明!"); // 输出结果:我是函数声明! } // 构造函数 var test = function(){ console.log(" 我是构造函数!"); // 输出结果:我是构造函数! }
// 函数调用 function sayHello(){ console.log("hello world"); // 输出结果: hello world } var info = sayHello; info(); // 第一次调用sayHello,输出一次 hello world var obj = { test:info } obj.test(); // 第二次调用sayHello,输出一次 hello world // 数组:Array // 构造函数 Array: var arr = new Array(); arr[0] = 1; arr[1] = "tom"; arr[2] = 16; arr[3] = "male"; console.log(arr); // 输出结果:[ 1, 'tom', 16, 'male' ] /* 注意: 如果Array构造函数传递的是数值,则会按照该数组创建包含给定项数的数组,即只定义数组长度,但是没有值.但是,此数组和 var arr = [];不一样,arr是空数组,长度为0 */ var arr1 = new Array(3); console.log(arr1); // 输出结果:[ <3 empty items> ] 即数组arr是空数组,其长度为3 // 数组字面量 var arr = [1,"tom",16,"male"]; console.log(arr); // 输出结果:[ 1, 'tom', 16, 'male' ] // 数组的访问 var arr = [1,"tom",16,"male","hello world"]; var result1 = arr[3]; var result2 = arr[0]; var result3 = arr[6]; console.log(result1); // 输出结果:male console.log(result2); // 输出结果:1 console.log(result3); // 输出结果: undefined // 数组的属性: length /* 1、length不是只读的,即可以动态的改变 2、可以使用length给数组移除项或者添加新项 3、如果length设置为小于数组长度的项,会移除数组的项 */ var arr = [1,"tom",16,"male","hello world"]; console.log(arr.length); // 输出结果:5 // length小于数组原本的长度 ==> 移除项 arr.length = 2; console.log(arr); // 输出结果:[ 1, 'tom' ] //length大于数组原本的长度 ==> 新增项,但是值是undefined arr.length = 6; // 由于前面执行了arr.length = 2;故其数组已经改变,执行arr.length = 6;实则新增了四项空项,故输出结果如下 console.log(arr); // 输出结果:[ 1, 'tom', <4 empty items> ] console.log(arr[5]); // 输出结果:undefined // 数组的遍历 // 定义数组 var arr = [5,4,3,2,1]; // 使用for循环遍历数组的值,注意:i不能<=arr.length,如果小于等于,就相当于访问了arr[5];值是undefined for(var i=0;i<arr.length;i++){ console.log(arr[i]); } /* 输出结果: 5 4 3 2 1 */ // 模拟push,重构myPush 实现将 原打印数组长度和新数组 变成 打印新数组和原数组 Array.prototype.myPush = function(){ // 创建一个空的 arr 数组 var arr = []; // 将原来 arr=[1,2] 数组里的值复制到空的 arr 数组里 for(var i=0;i<this.length;i++){ arr[i] = this[i]; } console.log(arr); // 输出结果为:[1,2] var len = arr.length; // 表示将 arr.length 的值赋值给 len,此时 len=2 for(var key in arguments){ var item = arguments[key]; // 第一次循环表示 item = arguments[0] ,即item = 'terry' 第二次 item = arguments[1] = 'larry' 第三次 item = arguments[2] = 'tom' arr[len+(+key)] = item; // 第一次循环表示 arr[2+0] = item,即 arr[2] = 'terry' 第二次 arr[2+1] = arr[3] = 'larry' 第三次 arr[2+2] = arr[4] = 'tom' } console.log(arguments); // 输出结果为:[Arguments] { '0': 'terry', '1': 'larry', '2': 'tom' } return arr; } var arr = [1,2]; var result = arr.myPush("terry","larry","tom") // 将创建出来的新 arr 数组赋值给 result,调用 myPush 方法将 "terry","larry","tom" 插入到新数组末尾,故原 arr 数组不变 console.log(result,arr); // 打印 result 即新 arr 数组和原来的 arr 数组,输出结果为: [ 1, 2, 'terry', 'larry', 'tom' ] [ 1, 2 ] var arr2 = [1,2]; var result2 = arr2.push("terry","larry","tom"); // 将arr 数组赋值给 result2,调用 Push 方法将 "terry","larry","tom" 插入到 arr2 数组末尾,故原 arr2 数组已改变 console.log(result2,arr2); // 打印 result2 数组长度和原来的 arr2 数组,输出结果为: 5 [ 1, 2, 'terry', 'larry', 'tom' ]