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>