Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подмена родительского класса (мож кто осилет) (https://javascript.ru/forum/events/39448-podmena-roditelskogo-klassa-mozh-kto-osilet.html)

kichSman 30.06.2013 19:36

Подмена родительского класса (мож кто осилет)
 
Вопрос скорее теоретический, суть которого в следующем.

Есть созданный div элемент, который, соответственно, потомок HTMLDivElement и есть класс Test

Можно ли каким либо костылем сделать так, чтоб при проверки наследования у DIV элемента в цепочке родителей был Test

Проще говоря:
var div = document.querySelector('div'),
     Test;

Test = function(){};
Test.prototype = {};

div instanceof Test //true, возможно ли?

zebra 30.06.2013 21:14

Test.prototype = HTMLDivElement.prototype;

kichSman 30.06.2013 21:32

Цитата:

Сообщение от zebra
Test.prototype = HTMLDivElement.prototype;

Как раз суть вопроса в том, чтобы включить объект в цепочку родителей div-элемента, который уже запилен в DOM, чтобы у самого div-а спросить, а не у объекта.

Если на пальцах, то в некоторых библиотеках к элементам приписывают дополнительное собственное свойство и ориентируются на него, принадлежит ли этот элемент к классу или нет (например, когда присваивают методы и свойства собственного UI).

Но у меня возник вопрос, а можно ли сделать это нативно, т.е. через прототипы и собственно instanceof

zebra 30.06.2013 22:13

Без указания прототипа не знаю. :no:

dmitriymar 30.06.2013 23:00

Цитата:

Сообщение от kichSman
Как раз суть вопроса в том, чтобы включить объект в цепочку родителей div-элемента, который уже запилен в DOM, чтобы у самого div-а спросить, а не у объекта.

такое уже давно не курят :)

function A(){
 this.с = 40;
}
A.prototype.b = 30;

function B(){
 this.a = 20;
}

B.prototype = A.prototype;
A.prototype = new B();

var a = new A();

alert( a instanceof B);
alert( a instanceof A);

alert(a.a);
alert(a.b);
alert(a.с);

kichSman 01.07.2013 23:55

Нет, речь опять таки не про наследование объектов.
В общем, порасмыслев мозгами и несколькими изощрениями, пришел к выводу, что через наследование BOM загадить DOMом не выйдет.


Часовой пояс GMT +3, время: 11:59.