gpt4 book ai didi

将函数作为参数传递时的 Javascript 函数作用域问题

转载 作者:行者123 更新时间:2023-11-28 16:06:12 25 4
gpt4 key购买 nike

如果我有以下内容:

var ScatterQuadrant = function ScatterQuadrant( id, _width, _height, methods )
{
this.id = id;
this.canvas = document.getElementById( id );
this.canvas.width = _width;
this.canvas.height = _height;
this.ctx = this.canvas.getContext( "2d" );
methods();

}

function Init()
{
var scatterQuad = new ScatterQuadrant(
"Frame", 800, 600, function()
{
this.ctx.fillStyle = "#FF0000"; // this.ctx isn't going to work, but what will?
this.ctx.fillRect( 0, 0, 150, 75 );
}
);

}

您会注意到我已将一个函数推送到我的 ScatterQuadrant 函数中,现在我想访问调用函数中的参数 ctx。我将如何做到这一点(请参阅代码中的评论)

最佳答案

调用方法就像这样,总是将this引用到全局对象未定义(ES5严格模式)。

您需要显式设置上下文,例如使用Function.prototype.call:

methods.call( this );

关于将函数作为参数传递时的 Javascript 函数作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14838211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com