У вас нет функции sayHi (), объявленной в этом коде.Просто добавьте эту строку
TEST.testObj.prototype.sayHi = function() {alert('hi')}
после части TEST.testObj.prototype...
.Это создаст новую функцию в цепочке прототипов TEST, которую вы можете вызывать внутри объекта testMenu
EDIT Способ привязки события onclick, которого имел в видуHTML-элемент div, а не объект.Это измененный код, который должен работать:
var TEST = {};
//User-created object
TEST.testObj = function () { this.initialize.apply(this, arguments); };
TEST.testObj.prototype = {
a: null,
initialize: function(a) {
this.a = a;
},
sayHi: function() {
alert(this.a);
}
}
//Menu accosiated with that class of objects
TEST.testMenu = function () { this.initialize.apply(this, arguments); };
TEST.testMenu.prototype = {
initialize: function(obj) {
this.obj = obj;
var menuItem = document.createElement('div');
menuItem.innerHTML = 'Say Hi!';
menuItem.onclick = function() { obj.sayHi(); }
document.body.appendChild(menuItem);
}
}
t1 = new TEST.testObj('Test Object');
menu = new TEST.testMenu(t1);