gpt4 book ai didi

JavaScript:使用 'this.' 调用函数不引用类中的方法

转载 作者:行者123 更新时间:2023-11-30 08:11:49 24 4
gpt4 key购买 nike

这是一个抽象的 JavaScript 代码示例,它说明了导致我在这里提出问题的情况:

function className (){    
var private_variable = 0;
function privateMethod(){
// Some irrelevant code.
};
this.privilegedMethod = function (){
// Some relevant code to determine if private variable needs to be modified.
private_variable+=val; // Modifies private variable.
};
this.init = function () {
$(window).keydown(function (key) {
if (key.which == 13) {
privateMethod(); // Call to private method works fine.
this.privilegedMethod(); // 'this' references Window object,
// not this class method as expected.
}
});
};
};

我的问题是 - 是否有其他方法可以调用 this.privilegedMethod() 引用它的类,而不是它所应用的 Window 对象?

或者可能有任何关于如何重组我的代码以保持功能的建议——全局监听关键事件,修改私有(private)变量的方法可以在类外访问,但私有(private)变量本身不能。

附言将对特权方法的调用置于私有(private)内部并没有改变任何东西。

最佳答案

this.init = function () {
var that = this;
$(window).keydown(function (key) {
if (key.which == 13) {
privateMethod();
that.privilegedMethod();
}
});
};

this.init = function () {
$(window).keydown($.proxy(function (key) {
if (key.which == 13) {
privateMethod();
this.privilegedMethod();
}
}, this));
};

关于JavaScript:使用 'this.' 调用函数不引用类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com