@Farrien
Tell me who

Как обратиться к верхнему прототипу?

Есть это
var aaa = function() {
	this.Version = '0.20161016';
}

aaa.prototype = {
	am : {
		aam : function(){
			console.log(this.Version);
			this.bm();
		}
	},
	bm : function() {
		console.log('done');
	}
}

var ff = new aaa();
ff.am.aam();


Но aam не понимает this.bm(), то есть не видит его. Как обратиться к нему?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 3
А в консоль смотреть не пробовали?
свойства объектов объявляются так:
aaa.prototype = {
  am: {},
  bm: function(){}
}
Ответ написан
@Rapen
Вы некорректно создаете вложенные объекты в прототипе, они как и остальные свойства задаются через двоеточие - :
И поэтму
aaa.prototype = {
  am : {
    aam : function(){
      console.log(this.Version);
      this.bm();
    }
  },
  bm : function() {
    console.log('done');
  }
}

И тут теряется контекст в общем bm'a так-как он не дочерний, в двух местах потеряли контекст в общем, с контекстом я думаю вы разберетесь)
Ответ написан
evgeniy8705
@evgeniy8705
Повелитель вселенной
Во первых. У вас ошибка. Свойства объектов указываются в виде ключ: значение, а у вас использовано вместо двоеточия, равно.
Во вторых. В prototype обычно добавляют методы класса в первом же уровне вложенности. Вы же, в prototype пытаетесь добавить объект методов. Так делать не стоит.

Вот так примерно необходимо сделать:
var Super = function() {
  this.version = "0.2016...";
}

Super.prototype.method1 = function() {
	console.log(this.version);
  
  this.method2();
}

Super.prototype.method2 = function() {
	console.log("done!");
}

var instance = new Super();

instance.method1();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
29 нояб. 2024, в 07:44
20000 руб./за проект
29 нояб. 2024, в 04:45
5000 руб./за проект
29 нояб. 2024, в 04:42
5000 руб./за проект