The defineProperty()
and defineProperties()
are methods of the JavaScript Object
class that can be used to add and modify properties dinamicaly directly on an object.
defineProperty()
- Defines a new property, or modifies an existing property of an object, and returns the object.
Object.defineProperty(obj, prop, { value: Prop_Value, configurable: true, enumerable: true })- obj - The object on which to define the property.
The third argument of this method (with the value of the property) is more complex, with some additional attributes. For a complete documentation see this page: developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty
// define an object var sites = { 'CoursesWeb': 'https://coursesweb.net/' }; // modifies the 'CoursesWeb' property Object.defineProperty(sites, 'CoursesWeb', { value: 'https://coursesweb.net/javascript' }); // adds a new property Object.defineProperty(sites, 'MarPlo', { value: 'https://marplo.net/', configurable: true, enumerable: true }); // Test document.write(sites.CoursesWeb +'<br>'+ sites.MarPlo); /* Result: https://coursesweb.net/javascript/ https://marplo.net/ */
defineProperties()
- Sets or modifies multiple existing properties same time directly on an object, returning the object.
Object.defineProperties(obj, { 'prop1': { value: value_prop1 }, 'prop2': { value_prop2 }, // ... })- obj - The object on which to define or modify properties.
// define an object var sites = { 'CoursesWeb': 'https://coursesweb.net/html/' }; // modifies the 'CoursesWeb' property, and adds two new properties // stores the object in another variable var sites2 = Object.defineProperties(sites, { CoursesWeb: { value: 'https://coursesweb.net/' }, MarPlo: { value: 'https://marplo.net/' }, id: { value: 8 } }); // Test properties in 'sites' and 'sites2' document.write(sites.CoursesWeb +'<br>'+ sites2.id); /* Result: https://coursesweb.net/ 8 */
defineProperty()
method. Data selected by the user from Select dropdown list are added as properties into an object, then, the object is displayed as JSON string.
<h4>Example with defineProperty()</h4> <p>Write a name in the text field, select an Age and Gender.</p> <div id='showob'>JSON object</div> <form action='#' method='post'> Name: <input type='text' name='nmusr' id='nmusr' onkeyup='setObj(this.id, this.value)' /><br> Age: <select name='agusr' id='agusr' onchange='setObj(this.id, this.value)'> <option>---</option> <option value='5-8'>5-8</option> <option value='9-14'>9-14</option> <option value='15-20'>15-20</option> <option value='21-30'>21-30</option> <option value='31-45'>31-45</option> </select><br> Gender: <select name='gdusr' id='gdusr' onchange='setObj(this.id, this.value)'> <option>---</option> <option value='male'>Male</option> <option value='female'>Female</option> </select> </form> <script> // set 'usrob' with one property var usrob = {nmusr: 'name'}; // this function adds /modifies property in usrob, using defineProperty() // converts it into a string, and displays it function setObj(prop, val) { Object.defineProperty(usrob, prop, { value: val, configurable: true, enumerable: true }); document.getElementById('showob').innerHTML = 'JSON object: <b>'+ JSON.stringify(usrob) +'</b>'; } </script>
<ul> <li>http://coursesweb.net/html/</li> <li>http://coursesweb.net/css/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net