1. // 对象:一个容器可以包含数据和功能
2. // 数据:通过对象的属性可以获取或设置数据
3. // 功能:通过对象的方法可以使用对象的提供的功能
4.
5.     var obj = new Object()
6.     var a = {}
7.     obj.name = 'wangBaoQaing'
8.     // 创建对象 为对象添加属性
9.
10.     function abc(){
11.         console.log('fff')
12.     }
13.
14.     // setInterval(abc,1000)
15.     // setInterval('abc()',1000)
16.     // 建议使用第一种方法
17.
18.
19.     // 场景一:将对象作为容器来使用 因为对象是一个容器 
20.     //      所以我们使用对象组织一组事件 
21.     //      从而将这一组数据当成一个整体
22.
23.     // 不使用对象的情况,要声明大量的变量 如果有很多人要表示
24.     // 页面上的变量就很换乱了
25.     var name,age,isMale,height,weight,color,course
26.     name = 'maRong'
27.     age = 3
28.     isMale =true
29.     height = 180
30.     weight = 190
31.     color = 0xFFFccc
32.     course = 'HTML5'
33.     // 当表示的数据增加时 还要定义一个新变量
34.
35.     // 函数表示定义大量的参数来表示每一项数据
36.     var showPerson = function(a,b,v,d,s,h,j,k,l){
37.         console.log('名字' + a)
38.     }
39.     // 调用函数时也需要传递大量数据,如果数据的顺序改变或者增加新的数据 就会很麻烦
40.     showPerson(1,2,3,4,5,6,7,8,9)
41.
42.     // 创建一个对象 把对象当数据的容器 用它来承载一组数据
43.     var p = {}
44.     p.name = 'wangBaoQiang'
45.     p.age = 3
46.     p.isMale = true
47.     p.color = 0xfffcccc
48.     p.course = 'HTML5'
49.     // 不用声明大量变量只需要把数据设为对象的属性即可
50.     console.log(p)
51.
52.     var showP = function(p){
53.         // for in 循环对象中的属性
54.         for(var k in p){
55.             console.log(k + ':' + p[k])
56.             // k 指的是对象的属性
57.             // p[k] 获取p对象中k属性的值
58.         }
59.     }
60.     showP(p)
61.
62.     // 场景二:将对象作为方法的容器来使用
63.     //       可以将一组功能相关方法组织成一个整体或者组织到一起
64.     Math.PI
65.     Math.E
66.     // 将常用的属性常量组织到一起
67.     Math.random() //0 - 1 之间的随机数
68.
69.     // 30 - 80 之间的随机数
70.     var a = Math.round(30 + Math.random() * (80-30))
71.     console.log(a)
72.
73.     // 场景三
74.     //  对象即是数据容器 同时也是功能容器
75.     //  对象即提供属性 同时也提供相关的方法
76.     //  如果说实现这一点的话 就需要把函数也放到对象的内部
77.
78.     // 把function 放到p对象的内部 写法上和属性类似 但不是等于一个值
79.     // 而是等于一个函数 放到对象内部的函数通常叫做方法
80.
81.     p.show = function(){
82.         console.log('名字' + this.name)
83.         console.log('年龄' + this.age)
84.         // 当一个函数移动到一个对象内部时可以使用this来表示它所在的对象    
85.     }
86.     p.show()
87.     // 当一个函数被移动到对象内部时 可以使用 对象.方法名() 调用这个函数
88.
89.     // 当一个对象包含了数据和功能时 就会相对独立 对外的依存度降低
90.     // 此时对象就可以变成一个相对独立的程序单元 可以拿到任意一个地方运行
91.     // 在使用对象的过程中就可以节省大量的细节代码
92.     // 即: 直接使用对象 不用在乎对象内部的代码如何写
93.
94.     // 对象可以是别写的 我们直接拿来使用
95.     // 也可以是我们写好给别人用