1. var p = {}
2. p.name = 'wangBaoQiang'
3. p.age = 30
4. p.show = function(){
5. console.log('你们好')
6. }
7.
8. // 那怎样才能删除age属性呢?
9.
10. // console.dir(p)
11. // p.age = undefined
12. // console.dir(p)
13. // p.age = null
14. // console.dir(p)
15. // 上述方法只能改变属性的值 不能删除属性
16. delete p.age
17. console.dir(p)
18. delete p.show
19. console.dir(p)
20. // delete 不光能删除属性也可以删除方法
21.
22. var num = new Number(3.14159)
23. console.log(num)
24. var obj = new Object(3.14159)
25. console.log(obj)
26. var b =new Object(true)
27. console.log(b)
28.
29. var p = {
30. name:'BaoBao',
31. age:3
32. }
33. var p1 = {
34. name:'maRong',
35. age:4
36. }
37. Object.defineProperty(p1,'isMale',{
38. value:true,
39. configurable:true,
40. writable:true,
41. enumerable:true
42. })
43. // defineProperty 为对象定义一个新的属性
44. // 三个参数
45. // 第一个参数:要添加新属性的对象
46. // 第二个参数:属性名称
47. // 第三个参数:属性描述对象{
48. // value:属性值
49. // configurable 默认为false 指定属性是否被删除 false无法删除
50. // writable 指定属性值是否能改变
51. // enumerable 属性名是否在枚举中 也就是说可以被for...in...列举出来
52. // }
53. // delete p1.isMale
54. p1.isMale = '111'
55. console.log(p1)
56. for(var k in p1){
57. console.log(k)
58. }
59.
60. p1.height = 100
61.
62. var heightDesc = Object.getOwnPropertyDescriptor(p1,'height')
63. console.log(heightDesc)
64. // 在p1对象里获取属性height的描述信息
65.
66.
67. // 创建一批表示人的p对象 比如100人
68. var p2 = {
69. name:'1',
70. age : '3',
71. desc:'我的名字叫baoqiang,今年28'
72. }
73. var p3 = {
74. name:'2',
75. age : '4',
76. desc:'我的名字叫marong,今年48'
77. }
78. var p4 = {
79. name:'3',
80. age : '7',
81. desc:'我的名字叫songzhe,今年38'
82. }
83. // 使用构造函数
84. // 把一个函数当成构造函数使用 函数名字首字母大写
85. // Pascal命名法
86. function Person(name,age,isMale,height){
87. this.name = name
88. this.age = age
89. this.isMale = isMale
90. this.height = height
91. Object.defineProperty(this,'birthYear',{
92. configurable:false,
93. enumerable:true,
94. get:function(){
95. var year = new Date().getFullYear()
96. return year - this.age
97. },
98. set:function(value){
99. var year = new Date().getFullYear()
100. if(value > 2017){
101. alert('出生年份不能大于' + year)
102. return
103. }
104. this.age = year - value
105. }
106. })
107. }
108. // 把定义的属性代码移到构造函数中 之后 通过构造函数创建的对象都会有这些属性
109.
110. var person = new Person('1','3','4','5')
111. var person1 = new Person('4',28,'6','7')
112.
113. // 通过person1.birthYear获取属性值时会调用属性指定的get方法 计算出属性值
114.
115. person1.birthYear = 2200
116. console.log(person)
117. console.log(person1.birthYear)
118.
119. // 没有set方法的情况下 无法通过[.属性 = 值]改变属性的值
120. // 有set方法时 通过[.属性 = 值]设置值的时候
121. // 会调用set方法 将 = 后面的值当做参数传给set方法
122. // 已保留或者转换这个值
123.
124. console.log(p4)