I am following a backbone.js for beginners tutorial, and I've got stuck at the first hurdle. I get the error TypeError: a.apply is not a function in  firebug (Firefox 20.0.1).
I have the following code:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Backbone Test</title>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.1/css/bootstrap.min.css" />
<meta charset="utf-8" />
</head>
<body>
    <div class="container">
        <h1>User Manager</h1>
        <hr />
        <div class="page"></div>
    </div>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.2/underscore-min.js" type="text/javascript"></script>   
    <script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js" type="text/javascript"></script>
    <script>
        var Router = new Backbone.Router.extend({
            routes: {
                '': 'home'
            }    
        });
        var router = new Router();
    </script>
</body>
</html>
I am using these older versions of jquery, underscore and backbone because they are the versions used in the tutorial. I tried using current versions of all, and I get a similar error: "TypeError: i.apply is not a function".
The error happens when an instance of Router is created, ie the line: var router = new Router(); above.
Is the error to do with my set-up? WAMP, or the code, or the libraries? I can't understand it as it's the same to the letter as the tutorial.
Change
    var Router = new Backbone.Router.extend({
To
    var Router = Backbone.Router.extend({
When you're extending those classes, you only need to invoke extend, which will return the constructor function that you'll call new on later.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With