opencamp sofia

Download OpenCamp Sofia

If you can't read please download the document

Upload: asen-bozhilov

Post on 20-Jun-2015

728 views

Category:

Technology


0 download

TRANSCRIPT

  • 1. Firefox 4 JavaScript / Narcissus http://asenbozhilov.com

2. 3. Object API 4. Object API Object. defineProperty Object. getOwnPropertyDescriptor Object. defineProperties Object. getPrototypeOf Object. create Object. keys Object. getOwnPropertyNames Object. freeze Object. isFrozen Object. preventExtensions Object. isExtensible Object. seal Object. isSealed 5. varfoo = { bar:true }; for( variinfoo) { console. log (i);//bar} foo.bar =false ;// console. log (foo.bar);//false console. log ( deletefoo.bar);//true 6. Object. defineProperty(obj, prop, desc) 7. varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' , enumerable:true , writable:true , configurable:false }); 8. // [[Value]]varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' , enumerable:true , writable:true , configurable:false }); console. log (foo.bar);//baz 9. // [[ E numerable ]]varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' , enumerable: true , writable:true , configurable:false }); for( variinfoo) { console. log (i);//bar } 10. // [[Writable]]varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' , enumerable:true , writable: true , configurable:false }); foo.bar ='new value' ; console. log (foo.bar);//new value 11. // [[Configurable]]varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' , enumerable:true , writable:true , configurable: false }); console. log ( deletefoo.bar);//false console. log (foo.bar);//new value 12. // Setter and Getter varfoo = {}; ( function() { var_private; Object. defineProperty (foo,'bar' , { set:function(val) { _private= val; }, get:function() { return_private; } }); })(); foo.bar =10 ;// setter-foo.bar;// getter- 13. // varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' }); 14. / / 15. // varfoo = {}; Object. defineProperty (foo,'bar' , { value:'baz' }); for( variinfoo) { console. log (i);//bar for-in } foo.bar ='new value' ; console. log (foo.bar);//baz console. log ( deletefoo.bar);//false 16. Object. getOwnPropertyDescriptor(obj, prop) 17. //Object.getOwnPropertyDescriptor varfoo = {bar :true }, desc= Object. getOwnPropertyDescriptor (foo,'bar' ); console. dir (desc); /* value: true enumerable: true configurable : true writable: true */ 18. Object. defineProperties(obj, properties) 19. //Object.defineProperties varfoo = {}; Object. defineProperties (foo, { bar: { value:true , enumerable:true , writable:false , configurable:false }, baz: { value:false } }); 20. / /Object.defineProperties varfoo = {}, properties= { bar: { value:true , enumerable:true , writable:false , configurable:false }, baz: { value:false } }; // Object.defineProperties varhasOwnProp = Object. prototype .hasOwnProperty; for( variinproperties) { if(hasOwnProp. call (properties, i)) { Object. defineProperty (foo, i, properties[i]); } } 21. // [[Prototype]] varfoo = {}; console. log ( typeoffoo.hasOwnProperty);//function console. log (foo. hasOwnProperty ( 'hasOwnProperty' ));//false console. log (Object. prototype . hasOwnProperty ( 'hasOwnProperty' ));//true 22. // [[Prototype]] varfoo = { [[Prototype]] : Object. prototype }; 23. Object. getPrototypeOf(obj) 24. //Object.getPrototypeOf varfoo = {}; Object. getPrototypeOf (foo) === Object. prototype ;//true 25. / / function getValueOf (obj, prop) { varhasOwnProp = Object. prototype .hasOwnProperty; do{ if(hasOwnProp. call (obj, prop)) { returnobj[prop]; } }while( obj = Object. getPrototypeOf (obj) ); // undefined returnundefined; } varfoo = {bar :10 }; console. log (foo.bar);//10 console. log ( getValueOf (foo,'bar' ));//10 console. log (foo.foo);//undefined console. log ( getValueOf (foo,'foo' ));//undefined 26. Object. create(proto [, properties ]) 27. //Object.create varfoo = {a :10 , b :20 }; varbar = Object. create (foo); console. log (bar.a);//10 console. log (bar.b);//20 Object. getPrototypeOf (bar) === foo;//true 28. //Object.create /* * , . * [[Prototype]] null . */ varmap = Object. create ( null ); 29. Object. keys(obj) 30. //Object.keys varobj = { foo:1 , bar:2 }; /* * [[Enumerable]] false */ Object. defineProperty (obj,'baz' , {value :3 }); /* * * Object.keys */ Object. keys (obj);//["foo", "bar"] 31. Object. getOwnPropertyNames(obj) 32. //Object.getOwnPropertyNames varobj = { foo:1 , bar:2 }; /* * [[Enumerable]] false */ Object. defineProperty (obj,'baz' , {value :3 }); /* * , * Object.getOwnPropertyNames */ Object. getOwnPropertyNames (obj);//["foo", "bar", "baz"] 33. Object. preventExtensions(obj)/Object. isExtensible(obj) 34. //Object.preventExtensions / Object.isExtensible varfoo = { bar:1 ,baz:2 }; /* * Object.preventExtensions *- */ Object. preventExtensions (foo); foo.newProperty =3 ; console. log (foo.newProperty);//undefined 35. //Object.preventExtensions / Object.isExtensible varfoo = {}, bar= {}; Object. preventExtensions (foo); console. log (Object. isExtensible (foo));//false console. log (Object. isExtensible (bar));//true 36. Object. seal(obj)/Object. isSealed(obj) 37. // Object.seal / Object.isSealed varfoo = { bar:1 ,baz:2 }; /**- *- */ Object. seal (foo); console. log ( deletefoo.bar);//false foo.newProperty =3 ; console. log (foo.newProperty);//undefined /* * */ foo.bar =6 ; console. log (foo.bar);//6 38. // Object.seal / Object.isSealed varfoo = {}, bar= {}; Object. seal (foo); console. log (Object. isSealed (foo));//true console. log (Object. isSealed (bar));//false 39. Object. freeze(obj)/Object. isFrozen(obj) 40. // Object.freeze / Object.isFrozen varfoo = { bar:1 ,baz:2 }; /* *- *- *- */ Object. freeze (foo); console. log ( deletefoo.bar);//false foo.newProperty =3 ; console. log (foo.newProperty);//undefined foo.bar =6 ; console. log (foo.bar);//1 41. // Object.freeze / Object.isFrozen varfoo = {}, bar= {}; Object. freeze (foo); console. log (Object. isFrozen (foo));//true console. log (Object. isFrozen (bar));//false 42. Narcissus 43. Narcissus

  • Open sourceJavaScript

44. JavaScript 45. JavaScript 46. Firefox 4 Zaphod 47. Narcissus //... //... Narcissus? 48. Narcissus. ( type ) Narcissus? 49. : :Dmitry Soshnikov