Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript不是构造函数_Javascript_Oop_Require - Fatal编程技术网

javascript不是构造函数

javascript不是构造函数,javascript,oop,require,Javascript,Oop,Require,我试图创建一个Javascript对象,但它给出了一个致命的错误,即不是构造函数对象。代码中有什么错误 form = new Form(data,option); str = form.JsonToHTML(); 下面是方法 define([ 'jquery', 'underscore', 'backbone', 'router/router' ], function($, _, Backbone, Router) { var form = function(da

我试图创建一个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
方法调用表单函数来模拟它


您还没有定义一个名为Form的函数,但是您可以通过创建一个空对象并使用
call
方法调用表单函数来模拟它


您似乎没有正确加载
表单
模块。您应该像这样加载它:

define(['form'], function(Form) {
    var form = new Form(data,option);
    var str = form.JsonToHTML();
    //your code
});
 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; 
});
您正在使用的
表单
模块是一个。这些工作方式是创建一个局部变量(函数参数)来引用代码所依赖的每个模块。在本例中,您希望将表单构造函数称为
form
,以便
newform
可以工作,这就是我在上面的示例中调用函数参数
form
的原因

我不确定
form
模块是您编写的还是其他人编写的,但是如果您可以更改它,那么最好将函数重命名为
form
(带大写字母F),以保持一致性,因为在JS中,构造函数函数以大写字母开头是一个标准约定

我建议像这样编写
表单
模块:

define(['form'], function(Form) {
    var form = new Form(data,option);
    var str = form.JsonToHTML();
    //your code
});
 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; 
});

您似乎没有正确加载
表单
模块。您应该像这样加载它:

define(['form'], function(Form) {
    var form = new Form(data,option);
    var str = form.JsonToHTML();
    //your code
});
 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; 
});
您正在使用的
表单
模块是一个。这些工作方式是创建一个局部变量(函数参数)来引用代码所依赖的每个模块。在本例中,您希望将表单构造函数称为
form
,以便
newform
可以工作,这就是我在上面的示例中调用函数参数
form
的原因

我不确定
form
模块是您编写的还是其他人编写的,但是如果您可以更改它,那么最好将函数重命名为
form
(带大写字母F),以保持一致性,因为在JS中,构造函数函数以大写字母开头是一个标准约定

我建议像这样编写
表单
模块:

define(['form'], function(Form) {
    var form = new Form(data,option);
    var str = form.JsonToHTML();
    //your code
});
 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; 
});

表单
未定义。我认为您可能复制了一些代码。例如,看起来您有一个额外的
})在代码末尾,由于其他人的麻烦,您遇到了一些麻烦!!从你粘贴的地方查看:)谢谢。调用该方法时出现问题。它工作正常
表单
未定义。我认为您可能复制了一些代码。例如,看起来您有一个额外的
})在代码末尾,由于其他人的麻烦,您遇到了一些麻烦!!从你粘贴的地方查看:)谢谢。调用该方法时出现问题。它工作得很好实际上这里有一个表单构造函数(在AMD模块中),它只是没有正确加载。实际上这里有一个表单构造函数(在AMD模块中),它只是没有正确加载。谢谢。我按照你的建议调用时出错了。它工作得很好,我发布了我将如何编写它……使用
原型是没有必要的,但它是JS中面向对象的标准方法(而且内存效率略高)。请注意,一般来说,原型应该只包含方法,而不包含属性(因为您希望所有实例共享方法,但每个实例都有不同的属性值)。我在做这件事的时候还注意到了一个打字错误……你在一个地方用了逗号而不是分号;也许那是你的主要问题。如果你觉得这个答案有帮助,请在有机会时将其标记为已接受的答案;谢谢,谢谢。我按照你的建议调用时出错了。它工作得很好,我发布了我将如何编写它……使用
原型是没有必要的,但它是JS中面向对象的标准方法(而且内存效率略高)。请注意,一般来说,原型应该只包含方法,而不包含属性(因为您希望所有实例共享方法,但每个实例都有不同的属性值)。我在做这件事的时候还注意到了一个打字错误……你在一个地方用了逗号而不是分号;也许那是你的主要问题。如果你觉得这个答案有帮助,请在有机会时将其标记为已接受的答案;谢谢