Показать сообщение отдельно
  #1 (permalink)  
Старый 23.09.2011, 18:27
Новичок на форуме
Отправить личное сообщение для Kinoman Посмотреть профиль Найти все сообщения от Kinoman
 
Регистрация: 23.09.2011
Сообщений: 2

Баг в реализации наследования.
Здравствуйте!

Есть следующая, наверняка знакомая вам реализация наследования:

function inherit(Child, Parent) {
  var temp = new Parent();
  for(var p in temp) if(temp.hasOwnProperty(p)) delete temp[p];
  Child.prototype = temp;
  Child.constructor = Child;
}


и вот такой пример её использования:

function Tool(name, src) {
  this.id = name;
  this.src = src; 
}

inherit(Tool, Image);

var o = new Tool("tool1", "/.../arr-right.png");
document.body.appendChild(o);
var o1 = new Tool("tool2", "/.../arr-left.png");
document.body.appendChild(o1);


В итоге получается ОДИН объект с именем tool2 и соурсом arr-left.png. Т.е. свойства id и src каким-то образом попали в прототип к Tool.

Пожалуйста, объясните, почему так случилось.

Спасибо.

Последний раз редактировалось Kinoman, 23.09.2011 в 18:39.
Ответить с цитированием