javascript如何在下面的代码中使用此关键字

时间:2014-02-25 08:02:46

标签: javascript

我们无法更改以下代码:

var t = 10;

function test(){
  var t = 20;
  alert(this.t);
}

我们必须更改或添加以下内容。

test();

上面的函数调用执行10;

我需要在功能测试中定义“20”。

5 个答案:

答案 0 :(得分:3)

由于您无法更改此功能,因此可以执行此操作

test = test.bind({t: 20});
test();

或单行

test.bind({t: 20})();

答案 1 :(得分:3)

你可以这样做:

test.call({t:20});

答案 2 :(得分:2)

看起来您需要了解JS如何解析名称(即通过范围扫描),以及this关键字的绑定方式。 I've dealt with this in detail here,并与其他资源相关联,详细介绍了几个方面。

它的长短是你的功能应该是这样的:

function f ()
{
    var t = 20;
    alert(t);//console.log would be better, though
}

根据代码,您无法获得var值。您必须更改一些代码,或更改调用函数的方式:

var obj = {t: 20, test: test};//test is the function name:
obj.test();//this.t will reference obj.t now

阅读链接的答案为何以及如何运作

答案 3 :(得分:0)

如果你调用test()它将作为一个函数而this将是全局对象(窗口)。如果您添加new关键字(new test();),那么它将是一个对象,this将引用该对象。但是你还需要在这里存储:

function test(){
  this.t = 20;
  alert(this.t);
}

new test();

或者您可以将其存储在var中并使用该var:

访问它
function test(){
  var t = 20;
  alert(t);
}

test();

答案 4 :(得分:0)

你可以这样做:

alert(20);

说真的,你可能误解了老师的指示。