javascript调用特权方法

标签 javascript

如果我在 onkeypress 之外调用 killSwitch(),我会导致错误。 但是在 onkeypress 函数内部,我工作得很好。 为什么?

//这很好用
变量 ClassA = 函数()
{
    var doc = 文档;
//killSwitch();

    doc.onkeypress = function(e){ killSwitch(); }
    this.killSwitch = function(){ alert('hello world'); }
}

var myClass = new ClassA();

最佳答案

您不能调用 killSwitch,因为您将该方法定义为对象实例 (this.killSwitch) 的属性。

你不能在 keypress 事件中使用 this,因为它会引用 document,你必须存储 这个值:

var ClassA = function() {  
    var doc = document, 
              instance = this; // store reference to `this`

    doc.onkeypress = function(e){ instance.killSwitch(); }; 
    this.killSwitch = function(){ alert('hello world'); };
}

var myClass = new ClassA();

关于javascript调用特权方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885387/

相关文章:

c# - 应用程序部署到实时服务器时出现 500 内部服务器错误

javascript - Angular Material 样式类不起作用

javascript - 随着时间的推移增加字体大小

javascript - 在 JavaScript 中组织扩展方法的最佳实践

javascript - 将参数从 Liquid 传递给 JS 函数

javascript - 在 React Native/Javascript 中比较对象数组与字符串的值

javascript - xmldoc.selectNodes() 无法正常工作

javascript - Angularjs - 同一个表中不同列的多个 ng-repeat

javascript - React 中的 HTML5 音频标签

javascript - Three.js 使用图像主色而不是图像本身