Я принимаю приключение в глубину JavaScript и сталкиваюсь с небольшой проблемой, с которой я не могу опустить голову.JavaScript новые объекты внутри объектов, дублирующих
Все, что я знаю о программировании, является самоучкой, эта проблема может иметь некоторую терминологию, о которой я никогда не слышал, поэтому я не знаю, как это будет называться.
Я объясню проблему, которую я испытываю.
Я писал рамки для холста HTML5 для отображения 2d и 3d графики.
Как и следовало ожидать, я разработал класс элемента, эти элементы имеют позиции на холсте, которые построены из векторного класса, который я собрал вместе.
Проблема у меня есть, если я два объекта «Текст», а затем вызвать функцию внутри своего объекта позиции, все позиции «Текст» объектов изменяется на это значение:
var usernameLabel = new C.Text('Username:');
usernameLabel.position.set(30,30)
var username = new C.Text('Hello World');
username.position.set(0,70)
console.log(usernameLabel.position.x) // 0 when it should be 30
Я уверен, что что-то я пропустил, я просто не могу понять, что.
C.Text.prototype = new C.Element();
C.Element.position = new JC.Vector();
Любая помощь была бы очень признательна!
Это мой полный класс Element
C.elements = 0;
C.Element = function()
{
this.id = C.elements ++;
this.position = new C.Vector();
this.rotation = new C.Vector();
this.style = new C.Style();
this.children = [];
}
C.Element.prototype = {
constructor : C.Element,
addChildObject : function(o)
{
return this.children.push(o);
},
removeChildObject : function(o)
{
this.children.splice(o,1);
}
}
Класс текста
C.Text = function(string)
{
this.string = string || '';
}
C.Text.prototype = new C.Element();
C.Text.prototype.constructor = C.Text();
Я также больше классов построены из C.Element, очевидно, к примеру:
C.Rectangle = function(width, height)
{
this.style.setSize(width,height);
}
C.Rectangle.prototype = new C.Element();
C.Rectangle.prototype.constructor = new C.Rectangle();
var usernameLabel = new C.Text('Username:');
usernameLabel.position.set(30,30) // 0,70?
var username = new C.Text('');
username.position.set(0,70) // 0,70
var rect = new C.Rectangle(20,0);
rect.position.set(30,80) // 90,80?
var rect2 = new C.Rectangle(20,0);
rect2.position.set(90,80) // 90,80
@ user4030 отправьте его в jsBin или jsFiddle, и я могу взглянуть на него. Здесь будет трудно прочитать. – Ktash
Я добавил полный класс в описание. – user4030
Затем я также добавлю свой текстовый класс: – user4030