Javascript 使用方法的JS对象文字缺少什么?
我试图创建一个简单的对象文字,其中包含一个方法,在本例中,它是画布上的一个移动块。我在上使用教程编写了以下代码Javascript 使用方法的JS对象文字缺少什么?,javascript,object,object-literal,Javascript,Object,Object Literal,我试图创建一个简单的对象文字,其中包含一个方法,在本例中,它是画布上的一个移动块。我在上使用教程编写了以下代码 由于某些原因,它不会像这样工作,而如果我现在在draw()函数中的draw方法中编写代码,它就会这样工作。我可能遗漏了一些东西,但是什么呢?block及其成员从未听说过ctx,它是您的draw()函数的本地函数 要么将其设置为全局,要么将其传递到块中。绘制: var block = { // ... draw: function(ctx) { // ... }
由于某些原因,它不会像这样工作,而如果我现在在draw()函数中的draw方法中编写代码,它就会这样工作。我可能遗漏了一些东西,但是什么呢?
block
及其成员从未听说过ctx
,它是您的draw()
函数的本地函数
要么将其设置为全局,要么将其传递到块中。绘制:
var block = {
// ...
draw: function(ctx) {
// ...
}
};
// ...
block.draw(ctx);
block
及其成员从未听说过ctx
,它是draw()函数的本地函数
要么将其设置为全局,要么将其传递到块中。绘制:
var block = {
// ...
draw: function(ctx) {
// ...
}
};
// ...
block.draw(ctx);
声明方法时,ctx
未知。该方法创建一个闭包,对ctx
没有任何值。请记住,作用域并不完全是动态的(关于引用),因为作用域是根据函数定义定义的,而不是函数用法定义的
如何修复:将ctx
作为参数传递给方法,或作为可赋值属性传递(并修改方法以引用this.ctx
)ctx
在声明方法时是未知的。该方法创建一个闭包,对ctx
没有任何值。请记住,作用域并不完全是动态的(关于引用),因为作用域是根据函数定义定义的,而不是函数用法定义的
如何修复:将ctx
作为参数传递给方法,或作为可赋值属性传递(并修改方法以引用this.ctx
)如果不将其作为参数传递,代码应该如何到达“ctx”变量?当JavaScript不工作时,请始终查看控制台,它可能包含有用的错误@Pointy并不总是在附近告诉您出了什么问题。如果不将“ctx”变量作为参数传递,代码应该如何到达该变量?当JavaScript不工作时,请始终查看控制台,它可能包含有用的错误@Pointy并不总是在附近告诉你出了什么问题。block
是一个对象,甚至不知道“范围”的概念。正如你所说,只有函数才能“听说过变量”。我最谦虚的歉意是用口语解释了一些事情。我显然是历史上最可怕的怪物。block
是一个对象,甚至不知道“范围”的概念。正如你所说,只有函数才能“听说过变量”。我最谦虚的歉意是用口语解释了一些事情。我显然是历史上最可怕的怪物。