JavaScript 找不到存在的方法



我的JavaScript文件中声明了一个非常简单的函数,它应该返回验证是否已经开始:

window.Validator = function(){
this._started = false;
this.started = function(){
return this._started;
};
}
Validator.started();

但是,当我调用Validator.started()时,即使它实际上是在声明之后,它也会抛出错误:

未捕获的类型错误:Validator.started 不是一个函数

真的让我摸不着头脑,不知道为什么它不起作用。

你应该创建一个验证器的实例

new Validator().started()

>this是一个上下文。或者简单地说,它是一个位于点左侧的对象。例如:

let v = new Validator();
v.started(); // v will be 'this' in your method

您的代码:

Validator.started();

这意味着,started()是一种静态Validator方法(精确函数Validator()的方法(。你必须像我上面写的那样编写代码。或:

window.Validator = function() {};
Validator._started = false;
Validator.started = function() {
return this._started;
};
console.log(Validator.started());

这里_started是一个静态属性,started()是一个静态的Validator()方法。

在没有"use strict"的函数中this指向全局对象,即window

因此,您的this.started = function(){...}是在window对象上定义的。当然,它仅在调用Validator后定义。

所以这段代码有效,尽管它可能不是你想使用它的方式。

window.Validator = function(){
this._started = false;
this.started = function(){
return this._started;
};
}
Validator();
started();
console.log(_started);

如果您确实使用"use strict",则会在函数定义区域中undefinedthis。您需要创建一个Validator的对象,this调用该方法时该对象。

最新更新