JavaScript - object properties and prototype chain
Sons of JavaScript Collection | this article
As we saw in another protip properties can be created in two different ways. This is by using a literal object notation or by using a function constructor.
var person = {};
person.name = "John";
person.surname = "Smith";
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
var person = new Person("John", "Smith");
Checking object property existence
console.log("name" in person); // true
console.log(person.hasOwnProperty("name")); //true
Using dictionary notation
console.log(person["name"]); // John
Using for..in loop
for (var key in person) {
console.log(person[key]);
}
// John Smith
If you are using prototypes in order to avoid displaying the properties higher on the prototype chain you can filter those properties by using object.hasOwnProperty(property_name). Note also that if you declare anonymous functions as variables you will have to filter those too with (typeof(person[key]) != "function"). Definition would look like var myFn = function(){};
for (var key in person) {
if (person.hasOwnProperty(key)) //filter prototype properties
console.log(person[key]);
}
// John Smith
Written by gerardsans
Related protips
Have a fresh tip? Share with Coderwall community!
JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.
Security insights from Cside