Use of hasOwnProperty

by Arnaud Buchholz

JavaScript

function log (text) {
  document.body
    .appendChild(document.createElement("div"))
    .appendChild(document.createTextNode(text));
}

function ul(callback) {
  var ul = document.body.appendChild(document.createElement("ul"));
  callback(function (text) {
  	ul
    	.appendChild(document.createElement("li"))
      .appendChild(document.createTextNode(text));
  });
}

var myObject = {
	member: "value",
	"method": function () {
		return this.property;
	}
};

myObject.newProperty = "second value";
myObject["another property"] = "third value";

log("Without hasOwnProperty (before Object modification):");
ul(function (li) {
	for (var name in myObject) {
    var value = myObject[name];
    li(name + ": " + typeof value);
	}
})

Object.prototype.ABUBU_WAS_HERE = true;
log("Without hasOwnProperty (after Object modification):");
ul(function (li) {
	for (var name in myObject) {
    var value = myObject[name];
    li(name + ": " + typeof value);
	}
})

log("With hasOwnProperty (after Object modification):");
ul(function (li) {
	for (var name in myObject) {
  	if (myObject.hasOwnProperty(name)) {
	    var value = myObject[name];
  	  li(name + ": " + typeof value);
    }
	}
})