Я новичок в Javascript и задавался вопросом, как можно изменить переменную public в прототипе.Как манипулировать переменной в прототипе?
function Thing (val)
{
this.x = val;
this.addToX = function (valIn)
{
this.x += valIn;
};
}
function ChildThing()
{
this.y = 55;
}
ChildThing.prototype = new Thing(10);
var frank = new ChildThing();
console.log("out1: " + frank.x);
frank.addToX(10);
console.log("out2: " + frank.x);
Этот код принимает значение в прототипе x, которое равно 10, и добавляет 10 к нему в функции addToX. Новое значение x сохраняется в объекте верхнего уровня, а не заменяет текущее значение x в прототипе.
Есть ли способ переписать существующий x в прототипе или я использую Javascript неправильно?
Почему вы пытаетесь это сделать? https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – candu
В общем, вы [не должны использовать возвращаемые значения 'new' для прототипов] (http: //programmers.stackexchange. ком/кв/198267/51295). – apsillers
Хорошо, поэтому я, возможно, упростил свою актуальную проблему. Все сводится к моему плохому пониманию того, как наследование должно действительно работать в Javascript. Фактическая проблема заключается в том, что вызывается функция рендеринга, а координаты x, y берутся из прототипа x, y. При попытке изменить эти значения значения child x, y обновляются, а значения, которые фактически используются для визуализации, всегда остаются теми же, поэтому объект всегда рисуется в старом местоположении. –