@daniil14056

Меняется свойства обьекта при вызове console.log(obj)?

Свойство boll.circle.x и .y меняются просто при интроспекции свойств boll-a.
И как работает console.log - может ли она обманывать
function Ball(circle,angle,u,region){
	this.circle=circle;//Circe { x:Number, y:Number,......}
	this.region=region;
	this.angle=angle*Math.PI/180;
	this.speed=u;
	this.cos=Math.cos(angle);
	this.sin=Math.sin(angle)
	console.log(circle)
}

Ball.prototype.move=function(){
	console.log("Это сообщ. не показывается, а то что ниже срабатывает как буд-то 3-5 раз, но если 2 строчки снизу закоментировать, то свойства не меняются "+this.circle.x+"  ,  "+this.circle.y);
	this.circle.x+=this.cos*this.speed;
	this.circle.y+=this.sin*this.speed;
	
}

// вызывается с сюрпризом
Controller.prototype.createBoll = function(){
	var ball=this.GeneratorBoll.createBoll(); //return new Boll(...)
	//var region=this.findRegionByPoint(Math.round(ball.circle.x),Math.round(ball.circle.y));
	console.log("BALLL1111",ball);// ball.circle.x=10
	console.log("BALLL222",ball); // ball.circle.x=20, что происходит
	console.log(ball.circle.x==ball.circle.x);  // true
        this.balls.push(ball); // эээ, если ее закоментировать, то в consol.log-ах все нормально, этот же вызов вообще после стоит,  и как влиять может
/// this.balls.push она добавляет ball в массив где его x и у другие
};
// вызов где то здесь
Controller.prototype.init=function(){

	this.canvas=new Canvas(this.id_canvas,this.width,this.height);
	this.GeneratorBoll=new GeneratorBoll(this.radius,this.width,this.height,
			this.uMin,this.uMax);	
	this.createBoll();
	this.roundAllBollsDraw();	
}
Controller.prototype.roundAllBollsDraw=function(){
	this.canvas.draw(this.balls);
	this.balls.forEach(ball=>ball.move());
	this.checkCollison();
	this.ifLeave();
	//window.requestAnimationFrame(this.roundAllBollsDraw);
	setTimeout(()=>(this.roundAllBollsDraw()),1000);
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
В консоли показывается текущее состояние объекта, а не то, которое было в момент вывода. Но в саммари, которое видно до раскрытия, при этом может быть старая информация.

Хотите видеть точное состояние неиммутабельных объектов, делайте, например, так: JSON.parse(JSON.stringify(obj))

Но вообще, отлаживать удобнее и эффективнее через дебаггер, а не сообщения в консоли.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы