kolyaseg (kolyaseg) wrote,
kolyaseg
kolyaseg

Поиск в коде места изменения свойства объекта JS

Бывают такие ситуации, когда ну вот никак не удается понять, где происходит некоторое действие или событие, например, изменение свойства объекта. Вот как раз у меня такой случай в очередной раз произошел. Где-то кто-то делает объект видимым, т.е. устанавливает его свойство "visible" в true. Я перелопатил массу кода, оттрейсил (console.log) все что только можно, но так и не смог найти места, где это происходит. Только в логе по onEnterFrame вижу, что до определенного момента было false, a потом стало true. Наверняка для поиска такой хрени есть какие-то инструменты, но о них я не знаю и пользуюсь таким приемом...

Для нужного свойства мы переопределяем сеттер и геттер и в сеттере совершаем какую-то ошибку, например делаем сложение с необъявленной переменой:

Object.defineProperties(MyVObject.prototype,
{
    visible:
    {
        get: function()
        {
            return this.__visible;
        }
	,
	set: function(value)
	{
		console.log("MyVObject visible set", value);
			
		if(value)
		{
			var a = b + 7;		// переменная b не объявлена и ее использование вызовет ReferenceError
		}
		this.__visible = value;
	}	
    }
});


Теперь при установке свойства объекта в true сработает ошибка, которую покажет консоль и мы сможем увидеть весь путь вызовов функций и методов, который привел к этой ошибке. Профит.
Tags: javascript, полезно, программа
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments