所以,我正在使用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的解决方案与其他解决方案相同吗?我该如何解决这个问题?
答案 0 :(得分:4)
仔细阅读依赖项列表,version 1.0.0 of Backbone为:
Backbone的唯一硬依赖是Underscore.js(&gt; = 1.4.3)。对于RESTful持久性,通过Backbone.Router进行历史记录支持,使用Backbone.View进行DOM操作,包括json2.js和jQuery(&gt; = 1.7.0)或Zepto。
Backbone的唯一硬依赖是Underscore.js(&gt; = 1.8.3)。对于使用Backbone.View的RESTful持久性和DOM操作,包括jQuery(&gt; = 1.11.0)和json2.js以支持旧版Internet Explorer。 (下划线和jQuery API的模仿,例如Lodash和Zepto也会起作用,具有不同程度的兼容性。)
因此,在您共享的代码中,看起来缺少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>