I am tasked with refactoring some code from a former employee. He uses a constructor function that has two things that seem strange – 1, arbitrary code that runs outside of a function or property, and 2, locally defined functions. This is a simplification of what he is doing:
var Dog = function(){
    // Arbitrary code
    console.log('I am a dog');
    var foo = 'foo';
    // Function defined to local variable
    var bar = function(){
        console.log(foo);
        console.log('bar');
    };
    // Normal function in a constructor
    this.bark = function(){
        console.log('bark');
    };
};
var d = new Dog();
Is there any merit to this style of constructor function?  Or would it be better to refactor it to only define functions using this in the style of bark, and then running them on d as needed?
 
    