Я хочу реализовать своего рода одноэлементный объект (About
в приведенном ниже примере), который сам по себе находится внутри другого объекта (Main
).
Это мой код.Он работает во всех основных браузерах (Firefox, Chrome и даже IE9), но не в IE8.В IE8 вызов main.About.doSomething();
вызывает «Объект не поддерживает это свойство или метод».
Я также jsFiddled мой код здесь: http://jsfiddle.net/c3URh/12/
Что мне нужно для того, чтобызаставить его работать в IE8?
Примечание: Я могу позвонить main.About().doSomething()
, и он будет работать в IE8, но не будет работать в других браузерах, и в любом случае это неверно из ООПперспектива.
Мой код ошибки:
function About(){
this.doSomething = function(){
alert('a');
};
}
function Main(){
var about;
try {
Object.defineProperty(this, 'About', {
get: function () {
if (about == undefined) {
about = new About();
}
return about;
}
});
}
catch (e) {
// this code does not work in ie8. Throwing 'Object doesn't support this property or method'
this.About = function() {
if (about == undefined) {
about = new About();
}
return about;
};
}
}
function clickMe()
{
var main = new Main();
main.About.doSomething();
}