Отредактировано
Извините, первый ответ был неверным.
Ваша проблема в конструкторе.Поскольку вы передаете методы другим функциям для их вызова, они должны хранить ссылку на экземпляр в закрытии.
> var Obj1 = function () {
> this.Method1 = function () {
> MsgBoxSimNao("Show message?",
> this.Msg1,
> this.Msg2
> );
> }
Чтобы сохранить ссылку на экземпляр, измените его на:
var Obj1 = function () {
// Reference to the instance
var obj = this;
this.Method1 = function () {
MsgBoxSimNao("Show message?",
this.Msg1,
this.Msg2
);
}
В вызове у вас есть:
> this.Method1 = function () {
> MsgBoxSimNao("Show message?",
> this.Msg1,
> this.Msg2
> );
> }
, поэтому this.Msg1 и this.Msg2 передаст ссылки на эти функции, когда Method1 вызывается.Когда они вызываются из MsgBoxSimNao , они вызываются без какой-либо квалификации, поэтому когда Msg1 вызывается:
> this.Msg1 = function (parMsg) {
> alert('Yes');
> this.Method2();
> }
в функции this установлен на глобальный объект.Измените метод, чтобы сохранить ссылку на экземпляр:
this.Msg1 = function (parMsg) {
alert('Yes');
obj.Method2();
}
obj ссылается на экземпляр, и будет вызван его Method2 .Есть и другие способы сделать это, но это самый простой (для меня в любом случае).
Не проверено, но должно работать.