1. var p = {}
2. p.name = 'wangBaoQiang'
3. p.age = 3
4. p.isMale = true
5. console.log(p)
6. // delete p.isMale
7. // console.log(p)
8.
9. // Object.freeze(p)
10. // delete p.age
11. // console.log(p)
12.
13.
14. // Object.freeze() 冻结一个对象冻结后对象的属性不能被删除
15. // 冻结是冻结的整个对象而不是某一个属性
16. // 冻结后属性的值无法改变 不能添加新属性
17. // p.age = 4
18. // console.log(p)            
19.
20. // console.log(Object.isFrozen(p))
21. // Object.isFrozen() 判断对象是否被冻结
22. // console.log(p)            
23.
24.
25. // Object.seal() 密封一个对象 密封后属性不能被删除 但可以被改变
26. // 密封后不能添加新属性
27. // Object.seal(p)
28. // delete p.age
29. // p.age = 8
30. // p.height = 99
31. // console.log(p)            
32.
33. // console.log(Object.isSealed(p))
34. // Object.isSealed() 判断是否被密封
35.
36.
37. // Object.preventExtensions() 只能阻止添加属性或方法 不能阻止删除 不能阻止修改属性或方法
38. // Object.preventExtensions(p)
39. // p.weight = 22
40. // console.log(p)       
41.
42. // console.log(Object.isExtensible(p))
43. // Object.isExtensible() 判断对象是否被扩展
44. // console.log(p)
45.
46.
47. // freeze > seal > preventExtensions
48. // freeze 对象不可改变
49. // seal 只能修改值
50. // preventExtensions 只能阻止添加属性和方法
51.
52.
53. Object.defineProperty(p, 'course', {
54.     enumerable: false,
55.     value: 'HTML5'
56. })
57. console.log(p)
58.
59. var keys = Object.getOwnPropertyNames(p)
60. console.log(keys)
61. // getOwnPropertyNames 获取对象中属性的名字
62.
63.
64. keys = Object.keys(p)
65. // Object.keys() 返回自身属性
66. console.log(keys)
67. // for(var key in p){
68. //     console.log(key)
69. // }
70.
71. console.log(p.hasOwnProperty('course1'))
72. // hasOwnProperty() 判断是否拥有指定的属性
73.
74. console.log(p.propertyIsEnumerable('course'))
75. // propertyIsEnumerable() 判断属性是否被列举
76.
77.
78. var b = new Object(true)
79. console.log(b)
80. console.log(b.valueOf())
81. // valueOf() 从对象中取出值
82.
83.
84. console.log(p.toString())
85. console.log(b.toString())
86. // 每个对象都有toString()方法 但是对象可以改变这个方法的实现从而返回不同的值
87. // 一般对象返回[Object 对象构造函数名字]
88. // 其他对象不会返回特定的值如布尔对象返回 true/false 字符串
89. // Date对象返回 日期字符串
90. // 数字对象返回 数字字符串
91.
92. var n =new Number(3.14)
93. console.log(n.toString())
94. console.log(Object.prototype.toString.call(n))
95. console.log(Object.prototype.toString.call('ff'))
96. // 可以通过上面的方法获取对象的类型