Creating a Deprecated/Obsolete behavior for methods in a JavaScript library
From looking at your fiddle, the first thing I would do is make sure that your function is not anonymous:

// new function implementation
var Chart = function Chart(name, data) { //See what I did there?
    this.name = name;
    this.data = data;

    console.log("Chart &gt; constructor");
}


Then, to keep it KISS, I would 

// obsolete helper function
var ObsoleteWithReplacement = function( f ) {
    var wrapper = function() {
       console.warn("This function is now called " + f.name );
       f.apply(this, arguments);
    }
    wrapper.prototype = f.prototype;
    return wrapper;
}


Because the function is no longer anonymous, you can now use f.name, you no longer have to provide it. The drawback is that the new old function name is not logged, I think any JS developer could figure that one out.

Then you can do this:

// old deprecated function
var chart = ObsoleteWithReplacement(Chart);


The name ObsoleteWithReplacement is unfortunate, I would use simply Obsolete. Also I think function Obsolete(){..} makes more sense than var Obsolete = function Obsolete(){..}, var Obsolete = function (){..} should be avoided since it creates an anonymous function.

I forked this to http://jsfiddle.net/konijn_gmail_com/8a5Ax/