对象补充(深入) 基本概念、创建、属性方法

 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>

 

posted @ 2022-08-09 22:51  YBYZ  阅读(45)  评论(0)    收藏  举报