对象补充(深入) 基本概念、创建、属性方法
1 <script> 2 // js的数据类型 3 // 一、原始数据类型: 数值类型number,字符串string,布尔类型bool类型 4 // 二、特殊值: undefined,null 5 // 三、引用数据类型,赋值的时候是赋值的数据的内存地址: 对象object,数组array,函数function 6 // 对象: 一种数据结构,由属性和方法构成。是一类属性和方法的集合。 7 // 1. 对象是由键值对构成(key:value),键值对也可以叫对象的属性(键-属性名:值-属性值)。 8 // 2. 对象的属性值可以是任意数据类型,当属性值是函数的时候,就叫对象的方法。 9 // 3. 取值: 使用对象的属性可以用.属性名查看对应属性值,也可以用[属性名(或者变量)]方式查看属性值,用[]属性名需要添加""变为字符串,如: ["name"] 10 // 4. 对象的属性名是字符串,写的时候一般是省略了"",自动会转为字符串。 11 // 5. 赋值: 使用.属性名或者[属性名]给对象属性赋值。 12 13 14 //对象 15 var person = { 16 0: 'id', 17 name: '刘', 18 age: 18, 19 sex: '女', 20 move: function () {//对象的方法 21 console.log('对象的方法'); 22 } 23 } 24 console.log('.......................'); 25 26 //输出对象的值 27 console.log(person.name); 28 console.log(person['name']); 29 console.log(person[0]);//输出数字型属性 只能以这种方式 30 console.log(person['move']); 31 console.log(person);//输出整个对象 32 console.log('.......................'); 33 34 //运行对象里面的方法 35 person.move(); 36 person['move'](); 37 console.log('.......................'); 38 39 //删除对象里面的属性 delete 40 delete person[0]; 41 delete person.move; 42 console.log(person); 43 console.log('.......................'); 44 45 //查看对象的所有属性名。Object是js内置的对象,里面封装了操作js对象的属性和方法。 46 var keys = Object.keys(person)//把car对象中的所有属性名提取出来放到一个数组返回 47 console.log(keys); 48 keys.forEach(function (item) { 49 console.log(item + ':' + person[item]); 50 }) 51 console.log('.......................'); 52 53 54 //查看对象里卖弄是否存在某个属性 in,有则返回true,没有则返回false 55 console.log('name' in person); 56 57 //遍历对象 for in (日后开发多数使用object.keys更加简便) 58 for (var o in person) { 59 console.log(o + ':' + person[o]); 60 } 61 console.log('.......................'); 62 63 //with里面是代码块,作用是操作同一个对象的多个属性,提供一些书写方便(了解) 64 with (person) { 65 name = '杜'; 66 sex = '男'; 67 console.log(sex); 68 } 69 console.log(person); 70 console.log('.......................'); 71 72 73 //引用数据类型赋值的时候是赋值的内存地址 74 //引用数据类型中拷贝内存地址的方式叫浅拷贝。 75 var car1 = { name: 'car1', type: 'type1' }; 76 var car2 = car1; 77 car2.name = 'car2'; 78 car3 = car2; 79 console.log(car1);//{name: "car2", type: "type1"} 80 console.log(car2);//{name: "car2", type: "type1"} 81 console.log(car3);//{name: "car2", type: "type1"} 82 console.log('.......................'); 83 84 85 //数据的深拷贝,创建一个新的内存地址拷贝数据,数据改变不会对原数据有影响 86 87 var car4 = {}; 88 Object.keys(car1).forEach(function (item) { 89 car4[item] = car1[item]; 90 }) 91 console.log('car4:', car4);//{name: "car2", type: "type1"} 92 car4.name = 'car4'; 93 console.log('car1:', car1);//{name: "car2", type: "type1"} 94 console.log('car4:', car4);//{name: "car4", type: "type1"} 95 96 </script>