1. | 2. | 3. | 4. | 5. | 6. | 7. | 8. | 9. | 10. | 11. | 12. | 13. | 14. | 15. | 16. | 17. | 18. | 19. | 20. | 21. | 22. | 23. | 24. | 25. | 26. | 27. | 28. | 29. | 30. | 31. | 32. | 33. | 34. | 35. | 36. | 37. | 38. | 39. | 40. | 41. | 42. | 43. | 44. | 45. | 46. | 47. | 48. | 49. | 50. | 51. | 52. | 53. | 54. | 55. | 56. | 57. | 58. | 59. | 60. | 61. | 62. | 63. | 64. | 65. | 66. | 67. | 68. | 69. | 70. | 71. | 72. | 73. | 74. | 75. | 76. | 77. | 78. | 79. | 80. | 81. | 82. | 83. | 84. | 85. | 86. | 87. | 88. | 89. | 90. | 91. | 92. | 93. | 94. | 95. | 96. | 97. | 98. | 99. | 100. | 101. | 102. | 103. | 104. | 105. | 106. | 107. | 108. | 109. | 110. | 111. | 112. | 113. | 114. | 115. | 116. | 117. | 118. | 119. | 120. | 121. | 122. | 123. | 124. | 125. | 126. | 127. | 128. | 129. | 130. | 131. | 132. | 133. | 134. | 135. | 136. | 137. | 138. | 139. | 140. | 141. | 142. | 143. | 144. | 145. | 146. | 147. | 148. | 149. | 150. | 151. | 152. | 153. | 154. | 155. | 156. | 157. | 158. | 159. | 160. | 161. | 162. | 163. | 164. | 165. | 166. | 167. | 168. | 169. | 170. | 171. | 172. | 173. | 174. | 175. | 176. | 177. | 178. | 179. | 180. | 181. | 182. | 183. | 184. | 185. | 186. | 187. | 188. | 189. | 190. | 191. | 192. | 193. | 194. | 195. | 196. | 197. | 198. | 199. | 200. | 201. | 202. | 203. | 204. | 205. | 206. | 207. | 208. | 209. | 210. | 211. | 212. | 213. | 214. | 215. | 216. | 217. | 218. | 219. | 220. | 221. | 222. | 223. | 224. | 225. | 226. | 227. | 228. | 229. |
| " use strict " ;
|
| var iEmployee = Object . create ( { } , {
| " _name " : {
| value : " " ,
| writable : true
| } ,
| " _dept " : {
| value : " general " ,
| writable : true
| } ,
| " name " : {
| get : function (){
| return this . _name;
| } ,
| set : function ( value ){
| this . _name = value;
| } ,
| enumerable : true
| } ,
| " dept " : {
| get : function (){
| return this . _dept;
| } ,
| set : function ( value ){
| this . _dept = value;
| } ,
| enumerable : true
| }
| } );
|
| var iManager = Object . dvjhCloneAndProperties ( iEmployee, {
| " _reports " : {
| value : [ ] ,
| writable : true
| } ,
| " reports " : {
| get : function (){
| return this . _reports. concat ();
| } ,
| set : function ( value ){
| if ( Array . isArray ( value ) ){
| this . _reports = value;
| }
| } ,
| enumerable : true
| }
| } );
|
| var iWorkerBee = Object . dvjhCloneAndProperties ( iEmployee, {
| " _projects " : {
| value : [ ] ,
| writable : true
| } ,
| " projects " : {
| get : function (){
| return this . _projects. concat ();
| } ,
| set : function ( value ){
| if ( Array . isArray ( value ) ){
| this . _projects = value;
| }
| } ,
| enumerable : true
| }
| } );
|
| var iSalesPerson = Object . dvjhCloneAndProperties ( iWorkerBee, {
| " _quota " : {
| value : 100 ,
| writable : true
| } ,
| " quota " : {
| get : function (){
| return this . _quota;
| } ,
| set : function ( value ){
| this . _quota = value;
| } ,
| enumerable : true
| }
| } );
|
| iSalesPerson. dept = " sales " ;
|
| var iEngineer = Object . dvjhCloneAndProperties ( iWorkerBee, {
| " _machine " : {
| value : " " ,
| writable : true
| } ,
| " machine " : {
| get : function (){
| return this . _machine;
| } ,
| set : function ( value ){
| this . _machine = value;
| } ,
| enumerable : true
| }
| } );
|
| iEngineer. dept = " engineering " ;
|
| try {
| console. log ( iEmployee, iManager, iWorkerBee );
| console. log ( Object . keys ( iEmployee ), Object . keys ( iManager ), Object . keys ( iWorkerBee ) );
|
| Object . getOwnPropertyNames ( iEmployee ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( iEmployee, key );
|
| console. log ( " iEmployee : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
| Object . getOwnPropertyNames ( iManager ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( iManager, key );
|
| console. log ( " iManager : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
| Object . getOwnPropertyNames ( iWorkerBee ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( iWorkerBee, key );
|
| console. log ( " iWorkerBee : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
| console. log ( iSalesPerson, iEngineer );
| console. log ( Object . keys ( iSalesPerson ), Object . keys ( iEngineer ) );
|
| Object . getOwnPropertyNames ( iSalesPerson ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( iSalesPerson, key );
|
| console. log ( " iSalesPerson : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
| Object . getOwnPropertyNames ( iEngineer ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( iEngineer, key );
|
| console. log ( " iEngineer : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| var Pierre = Object . dvjhClone ( iEngineer );
|
| Pierre. name = " Dupond Pierre " ;
| Pierre. machine = " Trucspace " ;
| Pierre. projects = [ " space1 " ] ;
|
| console. log ( Pierre );
| console. log ( Object . keys ( Pierre ) );
|
| Object . getOwnPropertyNames ( Pierre ). forEach ( function ( key ){
| var props = Object . getOwnPropertyDescriptor ( Pierre, key );
|
| console. log ( " Pierre : key = " , key, " , value = " , props. value,
| " , writable = " , props. writable,
| " , enumerable = " , props. enumerable,
| " , configurable = " , props. configurable );
| } );
|
|
|
|
|
|
|
|
|
|
|
|
|
| }
| catch ( evt ){
| console. log ( evt. message );
| }
|
|