0

我有这个方法:

var stopwatch = function () {
    this.start = function () {
        (...)
    };

    this.stop = function() {
        (...)
    };
};

当我尝试调用它时:

stopwatch.start();

我越来越Uncaught TypeError: Object (here is my function) has no method 'start'。我究竟做错了什么?

4

4 回答 4

3

您正在将功能分配给该功能this.start以及this.stop 该功能何时stopwatch运行并且从不运行该功能。

看起来您想要一个带有一些原型的构造函数。

// By convention, constructor functions have names beginning with a capital letter
function Stopwatch () {
    /* initialisation time logic */
}

Stopwatch.prototype.stop = function () { };
Stopwatch.prototype.start = function () { };

// Create an instance
var my_stopwatch = new Stopwatch();
my_stopwatch.start();
于 2013-09-27T14:34:07.843 回答
1

您需要像这样调用 start 函数,

var obj = new stopwatch();
obj.start();

您可以创建该方法的实例并访问 start 函数。

于 2013-09-27T14:36:25.323 回答
1

您需要先创建一个新对象,然后才能在其上调用函数:

var stopwatch = function () {
    this.start = function () {
        console.log('test');
    };

    this.stop = function () {

    };
};

var s = new stopwatch();
s.start();

http://jsfiddle.net/9EWGK/

于 2013-09-27T14:37:36.157 回答
1

为什么不直接做new stopwatch().start()

于 2013-09-27T14:35:43.750 回答