我的javascript构造函数方法以文本形式返回整个方法,而不是预期的返回值

我的javascript构造函数方法以文本形式返回整个方法,而不是预期的返回值,javascript,Javascript,我不熟悉构造函数,在.js文件中包含以下内容: // should just get the number of customers out of the passed-in object function myCustomers(customerObj) { this.customerCount = function(customerObj) { return customerObj.length; }; } 在包含.js文件的.htm页面上,我有以下内容:

我不熟悉构造函数,在.js文件中包含以下内容:

// should just get the number of customers out of the passed-in object
function myCustomers(customerObj) {
    this.customerCount = function(customerObj) {
        return customerObj.length;
    };
}
在包含.js文件的.htm页面上,我有以下内容:

var tmpObj = new myCustomers(custObj);
alert(tmpObj.customerCount);
我所期望的是警报会告诉我客户的数量,例如“1”,等等。相反,警报包含我函数的整个文本,就像它是一个字符串一样,如下所示:

function(customerObj) {
    return customerObj.length;
}
var tmpObj = new myCustomers(custObj);
alert(tmpObj.customerCount(custObj));
我相信这很简单,但我在谷歌上搜索答案时遇到了困难,因为我的搜索包含非常通用的词,如函数、文本/字符串、方法等。仅供参考,这个例子是从一个更复杂的函数中删减的,希望能更容易理解这个问题。我已经用同样的结果测试了这个更简单的函数


提前谢谢

您应该这样调用该方法:

function(customerObj) {
    return customerObj.length;
}
var tmpObj = new myCustomers(custObj);
alert(tmpObj.customerCount(custObj));

注意方法括号;)

您应该这样调用该方法:

function(customerObj) {
    return customerObj.length;
}
var tmpObj = new myCustomers(custObj);
alert(tmpObj.customerCount(custObj));

注意方法括号;)

在您的警报中,您实际上并没有调用函数,而是将函数本身传递给
alert()
。试试这个:

警报(tmpObj.customerCount(custObj))


您可能还想将myCustomers对象更改为挂起传递到构造函数中的对象,这样您就不必在调用函数时再次传递它。

在您的警报中,您实际上并没有调用函数,而是将函数本身传递到
警报()
。试试这个:

警报(tmpObj.customerCount(custObj))


您可能还想将myCustomers对象更改为挂起传递到构造函数中的对象,这样您就不必在调用函数时再次传递该对象。

谢谢,这一回答既解决了我的问题,也解释了为什么我要将函数作为文本返回。我很感激你的快速回答!就您的建议而言,您的意思是添加类似于
this.customers=custObj,然后让我的方法
返回this.customer.length?谢谢,这个答案既解决了我的问题,也解释了为什么我要将函数恢复为文本。我很感激你的快速回答!就您的建议而言,您的意思是添加类似于
this.customers=custObj,然后让我的方法
返回this.customer.length?谢谢MatuDuke。。。我发现我错误地认为
这个。customerCount
是方法的返回值,而不是方法本身。我有这个权利吗?谢谢你的快速帮助!谢谢你,马图杜克。。。我发现我错误地认为
这个。customerCount
是方法的返回值,而不是方法本身。我有这个权利吗?谢谢你的快速帮助!