Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по наследованию (https://javascript.ru/forum/misc/9323-vopros-po-nasledovaniyu.html)

YISHIMITSY 10.05.2010 23:48

Вопрос по наследованию
 
function main() {
  if(this.main) return new main();
  this.prop = 1;
}
main.prototype = {
  method: function() { alert(this.prop) },
  property: this.prop
}
main().method(); // нормально
alert(main().property); // undefined


Собственно вопрос, почему this.prop виден через метод, но не виден через свойство? и можно каким-то образом всё-же присвоить его свойству? P.S статью про наследование читал, но многое не дошло..

Octane 10.05.2010 23:51

В момент создания объекта prototype = {…}, this указывает на window (global object, если точнее).

Вообще не совсем понял, как вы хотели, чтобы еще не существующее значение заранее записалось в prototype?

Riim 11.05.2010 01:10

new потерялся.

YISHIMITSY 12.05.2010 11:26

Цитата:

Сообщение от Riim (Сообщение 54783)
new потерялся.

а где он должен?

Riim 12.05.2010 11:43

Перед main() .

Octane 12.05.2010 12:21

Riim, там автоматически в конструкторе вызывается if(this.main) return new main();

Riim 12.05.2010 13:30

В 7-ой строке this ссылается на конструктор, а не на экземпляр. Свойства prop у конструктора нет.

Kolyaj 12.05.2010 13:34

Цитата:

Сообщение от Riim
В 7-ой строке this ссылается на конструктор, а не на экземпляр.

На window.

Riim 12.05.2010 13:42

Цитата:

Сообщение от Kolyaj
На window.

да, верно, туплю.


Часовой пояс GMT +3, время: 04:21.