" THIS"关键字冲突,当事件函数嵌套在对象

时间:2016-03-25 11:45:21

标签: javascript

我有一个想法是创建一个对象Shout,它应该从input元素中获取键盘消息onkeypress event。当用户按下某个键时,会出现带有喊叫感叹号的警告框。

当我想访问新onkeypress function内的对象属性时,会出现问题,因为关键字this指的是输入元素本身而不是Shout对象。

有什么方法可以解决它吗?

我不确定,如果这个概念是最佳的,但我把它当作一个实验。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>main</title>

</head>
<script>
var Shout;

function ShoutObj(_shout){
    this.shout = _shout;
    this.onkeypress = function(event){
               alert(this.shout); // shout is undefined, because "this" refers to input element
        }
}


function DoItFirst(){
    var selector = document.getElementById("s1");
    Shout = new ShoutObj("ouch");
    selector.onkeypress = Shout.onkeypress;
}

</script>

<body onload="DoItFirst()">
  <input id="s1" type="text"/>
</body>
</html>

0 个答案:

没有答案