我正在尝试创建一个Javascript对象,但它致命的不是构造函数对象。代码有什么问题。
form = new Form(data,option);
str = form.JsonToHTML();
以下是方法,
define([
'jquery',
'underscore',
'backbone',
'router/router'
], function($, _, Backbone, Router) {
var form = function(data, options) {
this.data = data;
this.options = options,
this.JsonToHtml = function() {
alert(Backbone);
alert(this.data);
}
};
return form;
});
答案 0 :(得分:0)
您尚未定义名为Form的函数,但您可以通过创建空对象并使用<x class="do-not-care-about-spaces">It can go either way here.</x>
<y class="please-no-spaces">These</y>
<y class="please-no-spaces">Should</y>
<y class="please-no-spaces">Touch</y>
方法调用表单函数来模拟此函数。
即。
call
答案 1 :(得分:0)
看起来您没有正确加载form
模块。您应该像这样加载它:
define(['form'], function(Form) {
var form = new Form(data,option);
var str = form.JsonToHTML();
//your code
});
您使用的form
模块是AMD module。这些工作方式是您创建一个局部变量(函数参数)来引用您的代码所依赖的每个模块。在这种情况下,您希望将表单构造函数称为Form
,以便new Form
起作用,这就是我在上面的示例中调用函数参数Form
的原因。
我不确定form
模块是否是您由其他人编写或编写的模块,但如果您可以更改它,则最好将该功能重命名为Form
(使用大写的F),为了保持一致性,因为它是JS中的标准约定,构造函数以大写字母开头。
我建议像这样编写form
模块:
define([
'jquery',
'underscore',
'backbone',
'router/router'
],
function($, _, Backbone, Router) {
function Form(data, options) {
this.data = data;
this.options = options;
}
Form.prototype.jsonToHtml = function() {
alert(Backbone);
alert(this.data);
}
return Form;
});