Баг в реализации наследования.
Здравствуйте!
Есть следующая, наверняка знакомая вам реализация наследования: 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. Пожалуйста, объясните, почему так случилось. Спасибо. |
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"); var o1 = new Tool("tool2", "/.../arr-left.png"); alert([[o.id, o.src], [o1.id, o1.src]].join('\n')) |
А ничего, что это только в firefox работает?
|
Да дело не в этом (хотя работает это в FF и Opera, но не в IE), дело в том, что есть какой-то баг в моем понимании наследования. Мне важно понять принцип. По идее , свойства id и src должны быть для каждого объекта o и o1 свои, однако, такое впечатление, что они попали в прототип к Tool, но как это произошло, и как этого избежать... Объясните, пожалуйста.
Я просто хочу научиться делать собственные объекты на основе встроенных, вызывая свой конструктор с new. |
Часовой пояс GMT +3, время: 04:39. |