Javascript在构造函数中将dom事件设置为prototype方法
Javascript seting dom event to prototype method in constructor
我遇到了一些Javascript问题,假设我们有一个构造函数
function test(element) {
this.element = element;
this.element.onfocus = function() { this.onfocus(); }
}
test.prototype.onfocus = function() {
alert("focused");
}
new test(document.getElementByID("E1"));
所以我试图动态地设置内部构造函数的焦点事件,但它似乎不工作,我不能弄清楚。
有人帮助吗?
谢谢,
AJ
在JavaScript中,在this.element.onfocus = function() {this.onfocus(); }
上下文中,second this是触发事件的元素。
换句话说,如果你想以正确的方式工作,你的代码应该像这样:
function test(element) {
this.element = element;
var currentObject = this;
this.element.onfocus = function() {currentObject.onfocus(); }
}
不要认为JavaScript是一个体面的面向对象编程语言,因为它是面向原型的,它有一些薄弱的东西,比如影响你的代码。
你为什么不读一读这篇文章呢?我相信它会为你澄清这个关键字:- http://www.switchonthecode.com/tutorials/javascript-tutorial-why-the-this-keyword-breaks
必须存储对'this'的引用,因为onfocus函数在另一个上下文中,而'this'引用的是其他内容:
function test(element) {
this.element = element;
var that = this;
this.element.onfocus = function() { that.onfocus(); }
}
相关文章:
- 如何设置html元素填充的动画
- 需要帮助设置json数组
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如何添加 Object.prototype.x?设置为 enumerable:false
- 为什么MDN Object.create polyfill上的Temp.prototype设置为null
- 在 JavaScript 中通过 B.prototype = new A() 继承,为什么需要设置 B.prototyp
- 在 Nodejs 中设置 Prototype 类的成员变量
- 模拟“类”时,为什么要在 .prototype 属性中设置方法,而不是在构造函数本身中设置方法
- 在 JavaScript 中设置子类的 .prototype
- 无法在 javascript 中使用 prototype = 设置实例原型
- 为什么可以't通过this指针设置prototype的值类型属性
- 为什么调用array.prototype. foreach .call()时将数组设置为THIS对象不能工作?
- Javascript使用this.prototype设置prototype
- Javascript将prototype的属性设置为object的属性
- Javascript -在构造函数或构造函数的prototype属性中设置属性
- 'this'在Array.prototype.slice.call(arguments)中设置上下文
- 设置Object.prototype.__proto__而不仅仅是Object.prototype
- Javascript在构造函数中将dom事件设置为prototype方法
- 如何将Object.prototype.somefunction设置为"只读"
- 原型继承-什么时候需要设置'prototype.constructor'属性