Backbone错误来自哪里?

时间:2017-03-25 15:26:52

标签: javascript backbone.js

所以,我正在使用Backbone创建一个基本视图,当我去运行它时,我得到了这个TypeError:

Uncaught TypeError: Right-hand side of instanceof is not an object

错误引用了backbone.min.js文件中的多个点和程序中的第18行。这是代码:

<!DOCTYPE HTML>

<HTML>
   <HEAD>
     <META CHARSET="UTF-8" />
     <TITLE>First View</TITLE>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>
     <SCRIPT LANGUAGE="Javascript">
         var PokeView = Backbone.View.extend({
             render: function() {
                 this.$el.html("Simisage");

                 return this;
             }
         });

         var myPokeView = new PokeView({ el: "#paragraph" });

         console.log(myPokeView instanceof Object);
         myPokeView.render();
     </SCRIPT>
 </HEAD>
 <BODY>
     <p id="paragraph"></p>
 </BODY>

我一直在寻找互联网,有些人遇到了同样的错误,但它与Backbone无关。 Backbone的解决方案与其他解决方案相同吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

  1. 使用目前为1.3.3的latest version of Backbone
  2. 在开发过程中使用任何lib 非缩小版本。甚至可以下载大量开发版按钮Backbone源文件。
  3. 仔细阅读依赖项列表,version 1.0.0 of Backbone为:

      

    Backbone的唯一硬依赖是Underscore.js(&gt; = 1.4.3)。对于RESTful持久性,通过Backbone.Router进行历史记录支持,使用Backbone.View进行DOM操作,包括json2.jsjQuery(&gt; = 1.7.0)或Zepto

    对于version 1.3.3

      

    Backbone的唯一硬依赖是Underscore.js(&gt; = 1.8.3)。对于使用Backbone.View的RESTful持久性和DOM操作,包括jQuery(&gt; = 1.11.0)和json2.js以支持旧版Internet Explorer。 (下划线和jQuery API的模仿,例如LodashZepto也会起作用,具有不同程度的兼容性。)

  4. 因此,在您共享的代码中,看起来缺少jQuery。只需将它包含在其他库之前,您就可以使用Backbone了。

    另请注意,您在执行该脚本代码段时,使用#paragraph元素的el option视图仍未在文档中存在。要解决此问题,请将脚本标记放在正文的底部。

    <html>
    <head>
        <meta charset="UTF-8" />
        <title>First View</title>
    </head>
    <body>
        <p id="paragraph"></p>
    
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone.js"></script>
        <script>
            var PokeView = Backbone.View.extend({
                render: function() {
                    this.$el.html("Simisage");
                    return this;
                }
            });
    
            var myPokeView = new PokeView({ el: "#paragraph" });
    
            console.log(myPokeView instanceof Object);
            myPokeView.render();
        </script>
    </body>
    </html>