Javascript Course


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()

defineProperty() - Defines a new property, or modifies an existing property of an object, and returns the object.

Syntax:
Object.defineProperty(obj, prop, {
 value: Prop_Value,
 configurable: true,
 enumerable: true
})
- obj - The object on which to define the property.
- prop - The name of the property to be defined or modified.
- Prop_Value - The value of the property specifieed to 'prop' parameter.
- configurable - if this attribute is set to false, the new added property cannot be then modified. Defaults to false.
- enumerable - if this attribute is set to false, the property not show up during enumeration of the properties on the corresponding object, will be stored only in memory. Defaults to false.

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


Example (see the comments in code):
// 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()

defineProperties() - Sets or modifies multiple existing properties same time directly on an object, returning the object.

Syntax:
Object.defineProperties(obj, {
 'prop1': { value: value_prop1 },
 'prop2': { value_prop2 },
 // ...
})
- obj - The object on which to define or modify properties.
- 'prop1', 'prop2' - The name of the properties to be defined or modified.
- value_prop1, value_prop2 - The values of the properties to be defined or modified.

Example (see the comments in code):
// 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
*/
• Here's a practical example with the 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>

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag is used to add lists into <ul> and <ol> elements?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://coursesweb.net/css/</li>
</ul>
Which value of the "display" property creates a block box for the content and ads a bullet marker?
block list-item inline-block
.some_class {
  display: list-item;
}
Which instruction converts a JavaScript object into a JSON string.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicate the PHP class used to work with HTML and XML content in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
defineProperty and defineProperties

Last accessed pages

  1. Moving html element to a random direction (5214)
  2. PHP getElementById and getElementsByTagName (49443)
  3. Area and Perimeter Calculator for 2D shapes (10161)
  4. PHP MySQL - SELECT, ORDER BY (12815)
  5. Node.js Move and Copy Directory (20115)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (477)
  2. CSS cursor property - Custom Cursors (81)
  3. The Mastery of Love (71)
  4. PHP-MySQL free course, online tutorials PHP MySQL code (63)
  5. CSS3 2D transforms (46)