Показать сообщение отдельно
  #2 (permalink)  
Старый 22.08.2010, 02:55
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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();

Последний раз редактировалось Octane, 22.08.2010 в 03:24.
Ответить с цитированием