我有这个方法:
var stopwatch = function () {
this.start = function () {
(...)
};
this.stop = function() {
(...)
};
};
当我尝试调用它时:
stopwatch.start();
我得到了Uncaught TypeError: Object (here is my function) has no method 'start'
。我做错了什么?
答案 0 :(得分: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();
答案 1 :(得分:1)
为什么不做new stopwatch().start()
?
答案 2 :(得分:1)
您需要像这样调用启动函数,
var obj = new stopwatch();
obj.start();
您可以创建该方法的实例并访问启动功能。
答案 3 :(得分:1)
您需要先创建一个新对象,然后才能调用它上面的函数:
var stopwatch = function () {
this.start = function () {
console.log('test');
};
this.stop = function () {
};
};
var s = new stopwatch();
s.start();