Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2016, 14:35
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Наследование классов классами
Всем привет! Помогите пожалуйста разобрать примерчик. В общем есть класс-родитель к примеру:
function gtClassName(){
this.arg = null;
this.GetClass = document.getElementsByClassName(this.arg);
}
Так же есть класс наследник:

function gtClassButtons(cls){

gtClassName.call(this);
this.arg = cls;
}
Суть вопроса в том , что при создании объекта и при попытке вывести его содержание через консоль на вызоде можно увидеть следующее:
gtClassButtons {arg: "B", GetClass: HTMLCollection[0]}GetClass: HTMLCollection[0]arg: "B"__proto__: Object
Аргумент класса наследника меняется на 'B' , но getElementByClassName не вытягивает классы с html
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2016, 21:47
Профессор
Отправить личное сообщение для Bond Посмотреть профиль Найти все сообщения от Bond
 
Регистрация: 16.06.2013
Сообщений: 172

shokoMoko,
Так и есть - потому что в this.GetClass класса gtClassButtons записывается не выражение а результат выполнения в нашем случае - document.getElementsByClassName(null), потому что Вы сначала выполняете this.GetClass = document.getElementsByClassName(this.arg) в то время когда this.arg = null, а потом задаете для this.arg = cls; и больше ничего не делаете.
Это тоже самое если бы вы делали так
var a = 3;
var b = 2 + a;
a = 5; // И после переопределения переменной а ожидаете что b будет равно не 5, а 7;

А для того что бы получить желаемый результат надо переопределить свойство this.GetClass
function gtClassButtons(cls){

gtClassName.call(this);
this.arg = cls;
this.GetClass = document.getElementsByClassName(this.arg);
}
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2016, 08:23
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

shokoMoko,
function A() {
	this.x1 = arguments[0];
	this.x2 = document.getElementsByClassName(arguments[0]);
}

function AA(x1) {
	A.apply(this, arguments);
	this.x3 = 'x3';
}

function AAA(x1, x4) {
	AA.apply(this, arguments);
	this.x4 = x4;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование классов shokoMoko Общие вопросы Javascript 2 23.05.2016 09:49
Наследование классов Panamaster Javascript под браузер 10 16.11.2014 03:03
Эмулятор классов на JavaScript yriiarutiunian Ваши сайты и скрипты 4 24.10.2014 21:26
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Наследование функционала классов атомарных типов FINoM Общие вопросы Javascript 8 14.01.2012 18:39