![](/img/trans.png)
[英]How we can call a public function inside public function using event handler in javascript
[英]How to call public function from event handler in JavaScript?
我有一个 JavaScript 类叫做 Greeter。 在我的课堂上,我有:
a
的公共函数我想要的是让我的文档单击事件处理程序调用公共函数a
。 但我收到错误:“未捕获的 ReferenceError:a 未定义”
这是我的代码:
var Greeter = (function () {
function Greeter() {
}
Greeter.prototype.a = function () {
alert('I am in a');
};
$(document).on( "click", function() {
alert('I am in click event handler');
a(); // <-- Why can't I call the public function a
});
return Greeter;
})();
var greeter = new Greeter();
这是一个演示。
a
在这里不是公共函数。 在window
对象上定义的函数是公共的,可以从任何地方访问(使用作用域链)。 它是在Greeter
的原型上定义的,因此使用new Greeter
在 Greeter 上创建的对象或从 Greeter 继承的子项可以使用语法obj.a()
调用它。
您可以使用以下语法调用该函数
Greeter.prototype.a();
或者,您也可以使用从Greeter
创建的greeter
对象来访问它
greeter.a(); // instance of Greeter class. Has access to the function defined on prototype
我还建议将在原型和事件绑定上添加新函数的代码移到Greeter
函数之外。
var Greeter = (function() { function Greeter() {} return Greeter; })(); Greeter.prototype.a = function() { alert('I am in a'); // b(); }; $(document).on("click", function() { alert('I am in click event handler'); Greeter.prototype.a(); }); var greeter = new Greeter();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
你最有可能想要的(我在这里猜测)
var Greeter = (function () {
function Greeter() {
var _this = this;
$(document).on( "click", function() {
alert('I am in click event handler');
_this.a(); // <-- Why can't I call the public function a
});
}
Greeter.prototype.a = function () {
alert('I am in a');
};
return Greeter;
})();
var greeter = new Greeter();
这样,只有在实例化后才会调用处理程序。 它有一个真正的参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.