Javascript 将'this'传递给.keyup()

Javascript 将'this'传递给.keyup(),javascript,jquery,function,scope,this,Javascript,Jquery,Function,Scope,This,问题: 我正在尝试使用this.str。是否有方法将此传递给.keyup()函数 function foo() { var str = "some text"; $('#inputbox').keyup(function (e) { alert(str); //<-- This will output "some text" alert(this.str); //<-- This will output "undefined" })

问题:

我正在尝试使用
this.str
。是否有方法将此
传递给
.keyup()
函数

function foo() {
    var str = "some text";
    $('#inputbox').keyup(function (e) {
       alert(str); //<-- This will output "some text"
       alert(this.str); //<-- This will output "undefined"
    });
}
函数foo(){
var str=“一些文本”;
$('#inputbox').keyup(函数(e){

警报(str);//您可以将
存储在变量中,通常将该变量命名为
\u this
\u self
\u me

像这样:

var str=“一些文本”;
var_this=这个;
$(“#按钮”)。单击(函数(){
console.log(str);
console.log(_this.str);
});


单击我
事实上,在JavaScript中,每个
函数都有自己的
作用域
,因此在
键控
回调
中,这个
不会引用
foo
,而是引用
$(“#输入框”)
,它没有一个名为
str
的属性,这就是为什么您得到了
未定义的
。这意味着您无法在
键控
回调范围内访问
foo.str

您可以做的是遵循
模块
模式代码样式,将
foo
str
存储在
变量
中,然后在
键控
回调中访问它:

function foo() {
    var str = "some text";
    var _self = this;
    _self.str = str;
    $('#inputbox').keyup(function (e) {
       alert(str); //<-- This will output "some text"
       alert(_self.str); //<-- This will output "some text" too
    });
}
函数foo(){
var str=“一些文本”;
var _self=这个;
_self.str=str;
$('#inputbox').keyup(函数(e){

警报(str);//
在该上下文中,此
指的是
$(“#输入框”)
。是否要为函数本身分配属性?对我来说,它不起作用。@user123456将代码转换为代码段,它们似乎都能正常工作。我正在调用foo at ready function是否设置了
this.str
?因为如果您从未设置过它,除了在我的示例中未定义之外,您无法从中获取值t不需要设置
this.str
,因为
var-str
在全局范围内,并且在全局范围内
var-str
this.str
相同。这仅适用于全局范围。如果不在全局范围内,则需要执行
var-str=this.str=“一些文本”
我仍然将此作为窗口对象。@user123456我的错,我忘了将
str
重新分配给
\u self
,确实是
在本例中,此
指的是全局
窗口
对象。