I have a function which I want to make it available to all objects. Its the mergeObject(object) function as defined below :
Object.prototype.mergeObjects = function(object){
if (typeof object != "object") return;
for(var key in object){
if (object.hasOwnProperty(key))
this[key] = object[key];
}
return this;
}
I have a variable events which is :
events : {
"click #retryBtn":"onRetryBtnClick",
"click #cancelBtn":"onCancelBtnClick",
"click .dialogButton":"onDialogBtnClick"
}
This is a backbone's events json Object.
when I try to run a for loop for keys in events
for (var key in events)
{
console.log(key)
}
It prints out
click #retryBtn
click #cancelBtn
click .dialogButton
mergeObjects
I dont understand why I get "mergeObjects" as key in "events" object.
The structure of events object is :
click #cancelBtn: "onCancelBtnClick"
click #retryBtn: "onRetryBtnClick"
click .dialogButton: "onDialogBtnClick"
__proto__: Object
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }
constructor: function Object() { [native code] }
hasOwnProperty: function hasOwnProperty() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
mergeObjects: function (object){
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
get __proto__: function __proto__() { [native code] }
set __proto__: function __proto__() { [native code] }
Can anyone explain me why "mergeObject" is part of the for loop keys?
How can I avoid it? Since there are other methods like "__defineGetter" which doesnt appear in the for loop keys.