Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача сразу в конструктор (https://javascript.ru/forum/misc/32362-peredacha-srazu-v-konstruktor.html)

PashPP 13.10.2012 11:53

Передача сразу в конструктор
 
Почему тут при инициализации класса в конструктор не передается this.classs?

function Branch(){
  this.branch = [];

  this.branchUl = document.createElement('UL');
  this.branchUl.className = this.classs;
  document.body.appendChild(this.branchUl);
  alert(this.classs)

};


function Last() {
  this.classs = 'last';
  this.when = 'last';
  this.lastBooks = [];

Last.prototype = new Branch;
Last.prototype.constructor = Last;
};

melky 13.10.2012 12:01

потому что this равен экземпляру Branch, а не экземпляру Last.

тут можно позаимствовать конструктор :


Last.prototype = new Branch;
// =>
Branch.call(this);

PashPP 13.10.2012 15:54

melky,
Спасибо.


Еще другой вопрос.
Как создать именованный массив, чтоб именем могло быть даже число.

Вот например:

var f = []

var g = "44343" ;

f[g] = "dssd"


Тут g станет на 44343 место, а должно быть "44343" : "dssd"

lord2kim 13.10.2012 17:59

PashPP, использовать объекты
var obj = {};
obj["44343"] = "dssd";
alert(obj["44343"]);

PashPP 13.10.2012 18:14

lord2kim,
Да. Думал об этом.
Но все же хотелось бы массивом.

Хотя, дурацкое рассуждение.
Мне просто надо иметь возможность отличать свойство-базу данных от просто свойств.
Планировал проверять потом инстансеофом на принадлежность к массиву

oneguy 14.10.2012 15:23

PashPP,
Ключами свойств любого объекта могут быть только строки. Если значение внутри квадратных скобок другого типа, то оно преобразуется в строку, и берётся свойство в объекте с таким ключом. Поэтому obj[44343] эквивалентно obj["44343"].
Тоже самое касается в том числе и массивов, так как они тоже являются объектами. При var a=[34, 56]; массив a будет иметь собственные свойства "0", "1" и "length".


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