Object.prototype.a = function () {
alert(this);
};
document.createElement("div").a();
Но в IE DOM-элементы не являются потомками Object, поэтому работать не будет.
Если нужно конкретно для DOM-элементов, а не всех объектов, то так:
HTMLElement.prototype.a = function () {
alert(this);
};
document.createElement("div").a();
Опять же в IE6,7 нет такого конструктора, в IE8 можно использовать конструктор Element, но только в Standards Compliant Mode.
Можно динамически менять контекст вызова:
http://javascript.ru/Function/call
http://javascript.ru/Function/apply
Или добавлять каждый раз этот метод:
function a() {
alert(this);
}
var node = document.createElement("div");
node.a = a;
node.a();
Ну и есть еще такой вариант:
function $(node) {
this.node = node;
}
$.prototype.a = function () {
alert(this.node);
};
new $(document.createElement("div")).a();
Или без new:
function $(node) {
return new $.wrapper(node);
}
$.wrapper = function (node) {
this.node = node;
};
$.wrapper.prototype = $.prototype = {
constructor: $,
a: function () {
alert(this.node);
return this;
},
b: function () {
alert(this.node.nodeName);
return this;
}
};
$(document.createElement("div")).a().b();