javascript 不是构造函数
javascript not a constructor
我正在尝试创建一个 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;
});
您还没有定义一个名为 Form 的函数,但是您可以通过创建一个空对象并使用 call
方法调用您的表单函数来模拟它。
即
var form = {};
formFunc.call(form, data, option);
form.JsonToHtml(); // will work
您似乎没有正确加载 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;
});
我正在尝试创建一个 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;
});
您还没有定义一个名为 Form 的函数,但是您可以通过创建一个空对象并使用 call
方法调用您的表单函数来模拟它。
即
var form = {};
formFunc.call(form, data, option);
form.JsonToHtml(); // will work
您似乎没有正确加载 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;
});