Javascript混淆对象函数“;“没有办法”;错误

Javascript混淆对象函数“;“没有办法”;错误,javascript,function,object,Javascript,Function,Object,我有一个函数,看起来像这样: function Students(){ // Function add: // Returns: add page this.add = function(){ // Get template $.get('view/students/new.html', function(template){ // Templating var html = Mustache.to_html(template); // Whe

我有一个函数,看起来像这样:

function Students(){
  // Function add:
  //  Returns: add page
  this.add = function(){

  // Get template
  $.get('view/students/new.html', function(template){

    // Templating
    var html = Mustache.to_html(template);

    // When document ready, write template to page
    $('document').ready(function(){
      $('#container').html(html);
    });
  });
};

};
var Students = {
    add: function() {
         $.get( /* ... */ );
    }
};
Students.add();
当我尝试调用它的
add
函数时,如下所示:
Students.add()

我得到一个错误:
uncaughttypeerror:对象函数Students(){…}没有方法“add”


提供了什么?

要使用学生的
实现,您应该执行以下操作:

var students = new Students();
students.add();
然而,这可能不是你想要的。您可能打算这样定义
学生

function Students(){
  // Function add:
  //  Returns: add page
  this.add = function(){

  // Get template
  $.get('view/students/new.html', function(template){

    // Templating
    var html = Mustache.to_html(template);

    // When document ready, write template to page
    $('document').ready(function(){
      $('#container').html(html);
    });
  });
};

};
var Students = {
    add: function() {
         $.get( /* ... */ );
    }
};
Students.add();
然后你可以这样称呼它:

function Students(){
  // Function add:
  //  Returns: add page
  this.add = function(){

  // Get template
  $.get('view/students/new.html', function(template){

    // Templating
    var html = Mustache.to_html(template);

    // When document ready, write template to page
    $('document').ready(function(){
      $('#container').html(html);
    });
  });
};

};
var Students = {
    add: function() {
         $.get( /* ... */ );
    }
};
Students.add();
您没有使用该代码将“add”函数添加到“Students”函数中;您正在将其添加到使用“学生”作为构造函数创建的实例中

var student = new Students();

student.add(); // won't get the error

学生被称为构造器

var s = new Students();
s.add()
Students
内部,
这将是一个从Students的prorotype继承的新对象,并自动返回。这么说

this.add = function() ....
正在将
add
函数添加到此返回的对象上。但是每次调用该函数时,都会从头创建该函数。为什么不将其添加到原型中,这样该函数只存在一次,而不必每次都重新创建

Students.prototype.add = function(){

嗯,
学生
没有
添加
方法

我想你是在假设你知道这是如何工作的。它不是对函数的引用,除非您手动这样做。
的值将完全取决于您如何调用
学生