Could I change a native function ?
Just a quick post about how to modify a document (and others generic objects) native methods.
What's that ?
... a really simple way to extend with your defined object each element created using document.createElement function.
This is an example with useful comments (I hope)
That's all, and this method is only a basic native method override example, have fun with JavaScript :-)
// basic example
document.createElement = (function(createElement, Element){
return function(nodeName){
var element, key;
try{element = createElement(nodeName)}
catch(e){element = createElement.call(document, nodeName)};
for(key in Element)
element[key] = Element[key];
return element;
}
})(document.createElement, {});
What's that ?
... a really simple way to extend with your defined object each element created using document.createElement function.
This is an example with useful comments (I hope)
// redefine document.createElement native function
// using anonymous function
document.createElement = (
function(
// original document.createElementFunction
createElement,
// object used to extend created elements
Element
){
// new document.createElement function
return function(
// type of element (div, p, link, style ... )
nodeName
){
// element and key to loop over object
var element, key;
// IE like this
try{element = createElement(nodeName)}
// FireFox like that
catch(e){element = createElement.call(document, nodeName)};
// loop over Element
for(key in Element)
// and assign each method to new element
element[key] = Element[key];
// return created element
return element;
}
})(
// send to anonymous, the original function
document.createElement,
// send object used to extend created elements too
{
// read firstChild node
read:function(){
return this.firstChild.nodeValue
},
// write text into node
write:function(text){
this.appendChild(document.createTextNode(text))
}
}
);
// basic example
onload = function(){
var div = document.createElement("div");
document.body.appendChild(div);
div.write("Hello World !!!");
alert(div.read()); // Hello World !!!
};
That's all, and this method is only a basic native method override example, have fun with JavaScript :-)
Comments
Post a Comment