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>
<input type="text" name="a_name" value="val" />
h3 { font-variant: small-caps; }
var msg = "Visit CoursesWeb.net"; alert(msg);
$ip = $_SERVER["REMOTE_ADDR"]; echo $ip;