Javascript:属性函数中的引用
Javascript: this reference within a property function
这是在浏览器上使用的。
function keyboardJS () {
this.keys = {};
this.tempASCIIkey;
this.tempCHARkey;
}
keyboardJS.prototype = {
keyIsUp : function (evt) {
console.log(this);
this.ASCIIkey = evt.keyCode;
this.CHARkey = String.fromCharCode(this.ASCIIkey);
this.keys[this.CHARkey] = false;
console.log(this.CHARkey + " is now " + this.keys[this.CHARkey]);
},
keyIsDown : function (evt) {
console.log(this);
this.ASCIIkey = evt.keyCode;
this.CHARkey = String.fromCharCode(this.ASCIIkey);
this.keys[this.CHARkey] = true;
console.log(this.CHARkey + " is now " + this.keys[this.CHARkey]);
},
init : function () {
document.addEventListener("keydown", this.keyIsDown);
document.addEventListener("keyup", this.keyIsUp);
}
}
var game = {};
game.myKeyboard = new keyboardJS();
game.myKeyboard.init();
但是,(控制台.log(这);)返回"#document"。如何在原型函数中引用对象的属性?
试试这个...
init : function () {
document.addEventListener("keydown", this.keyIsDown.bind(this));
document.addEventListener("keyup", this.keyIsUp.bind(this));
}
当你传递对函数的引用时,this
不会神奇地绑定,在这个上下文中,addEventListener()
,this
就是它的意思。
请注意,我们最喜欢的旧IE不支持bind()
。
你可以填充它,传递在原型上调用你的函数的函数,或者使用具有绑定等效项的库(在下划线中_.bind()
,在jQuery中$.proxy()
等)。
相关文章:
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- Javascript在引用函数到变量时等于这个
- 引用函数数组中的另一个函数
- window.load上单独的javascript文件中的引用函数
- 如何引用函数
- JavaScript:函数字典:函数可以从其字典中引用函数
- 未捕获的引用函数上的错误
- 从不同的.JS文件中引用函数中的数组
- 动态引用函数时的Javascript变量范围
- 函数作为对象中的属性:引用函数内部的其他属性
- 在Javascript中,如何引用函数范围内的变量,该变量来自在该函数中调用但在其他地方定义的函数
- 在IIFE中引用函数
- 如何从函数自己的实现中引用函数
- 是否可以从HTML文件中的特定脚本标签引用函数或对象?
- 在函数中引用函数的属性
- 在'class'在同一个类中引用函数不起作用
- 从JavaScript对象内的函数中引用函数
- JavaScript函数被事件监听器多次调用,即使我引用函数
- 在angularjs中的$scope成员函数中引用函数中的变量
- 如何用文档引用函数