Я создаю литерал объекта, который я использую как пространство имен. Объектный литерал (пространство имен) содержит конструкторскую функцию MyConstructor. Я хочу расширить прототип MyConstructor внутри литерала объекта. Если я вытащил объявление для MyConstructor и разместил его над объявлением myNamespace, все будет хорошо, за исключением того, что MyConstructor больше не помещается в пространство имен myNamespace. Как лучше всего сделать эту работу? Следующие не скомпилируются, потому что
. в этой строке:Объявление прототипа внутри объекта Literal
MyConstructor.prototype = {
Объект буквальный, указанный ниже.
Спасибо, Майк
var myNamespace = {
a: 3,
b: function (msg) {
alert(this.a);
},
MyConstructor: function(xx) {
this.x = xx;
},
MyConstructor.prototype = {
a: 1,
b: function() {
return true;
}
}
};
Обновление: принято решение работает. Однако сама посылка моего вопроса была ошибочной. Я бы не использовал объектный литерал вообще в этой ситуации, потому что сложнее провести тестирование, как я узнал. Вместо этого я бы использовал обычный объект, созданный с помощью конструктора, и помещал в него частные объекты. Другое дело, что функция «сам/немедленно выполняю», хотя и красива в некотором роде, немного сложнее объяснить новичкам.
Вы и meouw были оба правильными, и вы оба отвечали в режиме реального времени, но я мог выбрать только один из ваших ответов. Спасибо вам обоим. – Mike 2010-12-08 13:50:18