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

なぜそうしないのnew stopwatch().start()ですか?

于 2013-09-27T14:35:43.750 に答える
1

次のように start 関数を呼び出す必要があります。

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

そのメソッドのインスタンスを作成し、start 関数にアクセスできます。

于 2013-09-27T14:36:25.323 に答える
1

You need to create a new object first, only then you can call functions on it:

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 に答える